3

カスタム vtype でテキストフィールドを検証して空白をフィルタリングしようとしています。例: " "。app.js でカスタム vtype を定義しました (mvc パターンを使用しています)。

    Ext.Loader.setConfig({
        enabled : true,
        paths: {
            Ext: 'vendor/ext41/src',
            My: 'app'
        } 
    });
    Ext.apply(Ext.form.field.VTypes, {
        descartarBlanco:  function(value) {
            return /^\s+$/.test(value);
        }
    });

    Ext.application({
        name: 'CRUDManantiales',
        appFolder: 'app',
        controllers: ['Ui','Usuarios'],
        ....
    });

ただし、Firebug には次のエラーが表示されます。

TypeError: vtypes[vtype] は関数ではありません

構文は正しいと思います。しかし、Vtypeのコードをどこに挿入するのかわかりません。何か案が ?。ありがとう。

4

5 に答える 5

2

フォームをレンダリングする前に、アプリのコントローラーにカスタム vtype を配置しました。

Ext.define('MyApp.controller.Main', {
    extend: 'Ext.app.Controller',
    ...
    init: function () {
        var me = this;
        me.control({
            ...
            'form': {
                beforerender: this.applyVtypes
            },
            ...
        })
   },
   ...
   applyVtypes: function() {
       Ext.apply(Ext.form.field.VTypes, {
           descartarBlanco:  function(value) {
               return /^\s+$/.test(value);
           }
       }
   }
   ...    
}
于 2014-01-17T09:15:02.983 に答える
1

同じ問題に直面したため、解決策を見つけようとしてこの質問に到達しました。Ext.application の「init:」に追加するとうまくいきました。

    Ext.application({
            ..., 

            launch: function() { 
                ... 
            }, 

            init: function() {
                Ext.apply(Ext.form.field.VTypes, {
                    descartarBlanco:  function(value) {
                        return /^\s+$/.test(value);
                    }
                }
                console.log(Ext.form.field.VTypes); // for verification
            }
    })
于 2012-12-01T22:54:37.220 に答える
0

Ext.Loadersoを使用すると、Ext.form.field.VTypes後でどこかに上書きできます。実際に使用する直前に vtype 定義を追加してみてください。

于 2012-11-18T00:04:50.753 に答える
0

同じ問題かもしれませんが、Ext.data.Types では、型名が大文字の場合にのみ機能しました。小文字を使用すると、表示されているものと同様のメッセージが表示される場合。

于 2012-11-16T15:02:13.703 に答える