2012-04-02 10 views
0

どのようにしてtexfieldバリデータスコープを定義できますか?extjsバリデータスコープ

this.editView.getRegNumberTextField().validator = this.regNumberValidator; 
//... 
regNumberValidator:function (input) { 
//validation here 
} 

をしかし、この場合にregNumberValidator関数の範囲はRegNumberTextFieldである: 私はこのコードをコントローラにバリデータを定義します。コントローラのスコープにしたい。 Ext.applyを{scope:this}と試してみましたが、うまくいきませんでした。 on('event',handler, scope)ステートメントのように、スコープを定義する方法がいくつかあります。あなただけのデリゲートを作成する必要が

答えて

0

私の問題を解決するには、コードExt.bind では、次のとおりです。

this.editView.getRegNumberTextField().validator = Ext.bind(this.regNumberValidator,this); 
-1

this.editView.getRegNumberTextField().validator = this.regNumberValidator.createDelegate(this); 

//... 

regNumberValidator:function (input) { 
//validation here 
} 
+0

いいえv4のデリゲート –

1

単にあなたのように、「コントローラ」フィールドの属性を定義しますコントローラを使用すると、this.getController()を使用してバリデータ内のコントローラスコープにアクセスできます。

xtype: 'combo', 
controller: 'mycontrolleralias', 
validator : function() { 
    return this.getValue() === this.getController().getViewModel().get('record').getId()? 
             'Affiliate cannot be the parent of itself':true; 
}