В ExtJS я могу передать аргумент через vtype? - PullRequest
0 голосов
/ 04 мая 2011

Я не могу найти способ передачи аргумента через vtype.
Поэтому я делаю некоторую функцию onfly vtype.

var vtypeMaker = function(n){
    Ext.apply(Ext.form.VTypes, {
        myTest : function(v, o){
            console.debug(n); // <-- I can pass my custom value
            // do something
            // ...
            return myRegex.test(v);
        },
        myTestText : 'some message'
    });
}

И когда я хочу установить vtype, я должен сначала вызвать эту функцию.

vtypeMaker(10);
myTextfield.vtype = 'myTest';

Она работает, но слишком длинный код.
У кого-нибудь есть идея получше?

Спасибо.

1 Ответ

2 голосов
/ 04 мая 2011

Используйте конфигурацию validator , чтобы передать пользовательскую функцию проверки, и используйте createDelegate , чтобы настроить параметры, которые будут отправлены на него:

var myValidator = function( value, custom ) {
    if ( /* value is valid */ ) {
        return true;
    }
    else {
        return 'Field value is not valid';
    }
};

new Ext.form.TextField({
    fieldLabel: 'A text field',
    validator: myValidator.createDelegate(null, [10], true);
});

new Ext.form.TextField({
    fieldLabel: 'Another text field',
    validator: myValidator.createDelegate(null, [14], true);
});

Пользовательские параметры установлены во втором параметре на createDelegate . Установка третьего параметра на true приведет к тому, что эти пользовательские параметры будут добавлены к параметрам, с которыми была вызвана функция (в данном случае, к значению поля).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...