область действия валидатора extjs - PullRequest
0 голосов
/ 02 апреля 2012

Как определить область проверки texfield?Я определяю валидатор в контроллере с помощью этого кода:

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

Но в этом случае область действия функции regNumberValidator - RegNumberTextField.Я хочу, чтобы это была область Контроллера.Я попробовал Ext.apply с {scope: this}, но это не помогло.Должен быть какой-то способ определения области действия, например, в операторе on('event',handler, scope).

Ответы [ 3 ]

1 голос
/ 03 декабря 2015

Просто определите атрибут поля '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;
}
0 голосов
/ 09 апреля 2012

Решение моей проблемы - Ext.bind. Код:

this.editView.getRegNumberTextField().validator = Ext.bind(this.regNumberValidator,this);
0 голосов
/ 06 апреля 2012

Вам просто нужно создать делегата:

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

//...

regNumberValidator:function (input) {
//validation here
}
...