1

お願い助けて。モデルには、Ext.data.validations のバリデータ関数に対して実行されるバリデーションのサポートが組み込まれています。私のコード:

 Ext.define('User', {
        extend: 'Ext.data.Model',
        fields: [{
            name: 'name',    
            type: 'string'
        },{
            name: 'age',
            type: 'int'
        },{
            name: 'phone',
            type: 'string'
        },{
            name: 'gender',  
            type: 'string'
        },{
            name: 'username',
            type: 'string'
        }],
        validations: [
            {
            type: 'length',   
            field: 'name',    
            min: 2
            },{
            type: 'format',   
            field: 'username',
            matcher: /([a-z]+)[0-9]{2,3}/
            }]
    });

        var person = Ext.create('User', {
        name: 'Eugene',
        username: 'Popov',
        gender: 'F',
        age: 300,
        Married: false
    });
    console.log(person.get('name'))
    person.set('name','U');
     console.log(person.get('name'))//U
});

モデルがデータをフィルタリングできることを読みました。彼らの仕事の原則は何ですか?私の例で間違った値を書くことができるのはなぜですか? ありがとう!

4

1 に答える 1

2

モデルの検証は、変更自体を拒否しません。他のコンポーネント (ストアやグリッド エディターなど) を使用してモデルを編集すると、この機能が提供される場合があります。validate検証は、モデルでまたはisValidメソッドを呼び出すときにのみ有効になります。

モデルがストアの一部である場合は、ストアのupdateイベントをリッスンできます (ドキュメントへのリンク)。イベント ハンドラー内から、モデルを検証し、必要な変更を拒否できます。

// Simple demonstration
store.on('update', function (store, model, operation) {
    if (operation === Ext.data.Model.EDIT && !model.isValid()) {
        model.reject();
    }
});
于 2013-08-23T17:29:56.353 に答える