extjs验证器作用域
如何定义texfield验证器范围? 我使用以下代码在控制器中定义验证器:extjs验证器作用域,extjs,extjs4,validation,Extjs,Extjs4,Validation,如何定义texfield验证器范围? 我使用以下代码在控制器中定义验证器: this.editView.getRegNumberTextField().validator = this.regNumberValidator; //... regNumberValidator:function (input) { //validation here } 但在本例中,regNumberValidator函数的作用域是RegNumberTextField。我希望它是控制器的作用域。我用{scope
this.editView.getRegNumberTextField().validator = this.regNumberValidator;
//...
regNumberValidator:function (input) {
//validation here
}
但在本例中,regNumberValidator函数的作用域是RegNumberTextField。我希望它是控制器的作用域。我用{scope:this}尝试了Ext.apply,但没用。应该有一些方法来定义范围,比如在('event',handler,scope)语句中。您只需要创建一个委托:
this.editView.getRegNumberTextField().validator = this.regNumberValidator.createDelegate(this);
//...
regNumberValidator:function (input) {
//validation here
}
我的问题的解决办法是Ext.bind 代码是:
this.editView.getRegNumberTextField().validator = Ext.bind(this.regNumberValidator,this);
只需将“controller”字段属性定义为您的控制器,然后您就可以使用此.getController()访问验证程序中的控制器范围:
xtype: 'combo',
controller: 'mycontrolleralias',
validator : function () {
return this.getValue() === this.getController().getViewModel().get('record').getId()?
'Affiliate cannot be the parent of itself':true;
}