extjs验证器范围

时间:2012-04-02 07:53:25

标签: extjs extjs4 validation

如何定义texfield验证器范围? 我使用以下代码在控制器中定义验证器:

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

但在这种情况下,regNumberValidator函数中的范围是RegNumberTextField。我希望它是Controller范围。我用{scope:this}尝试了Ext.apply但它没有帮助。应该有一些方法来定义范围,例如在on('event',handler, scope)语句中。

3 个答案:

答案 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
}