如何定义texfield验证器范围? 我使用以下代码在控制器中定义验证器:
this.editView.getRegNumberTextField().validator = this.regNumberValidator;
//...
regNumberValidator:function (input) {
//validation here
}
但在这种情况下,regNumberValidator函数中的范围是RegNumberTextField。我希望它是Controller范围。我用{scope:this}尝试了Ext.apply但它没有帮助。应该有一些方法来定义范围,例如在on('event',handler, scope)
语句中。
答案 0 :(得分:1)
只需定义' controller'字段属性,作为您的控制器,然后您将使用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;
}
答案 1 :(得分:0)
我的问题的解决方案是Ext.bind 代码是:
this.editView.getRegNumberTextField().validator = Ext.bind(this.regNumberValidator,this);
答案 2 :(得分:-1)
您只需要创建一个委托:
this.editView.getRegNumberTextField().validator = this.regNumberValidator.createDelegate(this);
//...
regNumberValidator:function (input) {
//validation here
}