2011-05-04 137 views
0

我無法找到通過vtype傳遞參數的方式。
所以我做了一些onfly vtype函數。在ExtJS中,我可以通過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'; 

它可以工作,但代碼太長。
任何人有更好的主意嗎?

謝謝。

+0

爲什麼你需要動態創建你的vtype? – NT3RP 2011-05-04 11:52:49

回答

2

使用驗證配置通過自定義驗證功能,並使用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將導致那些自定義參數被附加到調用該函數的參數(在本例中爲字段值)。

相關問題