2012-05-11 33 views
3

我正在做eforms框架設計,在這裏會有多種產品可用,每種產品都會有不同類型的表單。在拖放時會出現在表單面板中,這些表單面板數據是從Json文件中取回的。我們有每個表單的json文件。如果我想在表單中爲這些字段添加驗證,意味着如何實現這一點,bcoz表單字段在json中可用,這將在拖放時動態生成。Extjs中動態生成表單的驗證

你們可以幫我解決這個問題嗎?

感謝和問候 rajNaveen

回答

2

你關聯的模式,用形式?如果是這樣,您可以將驗證邏輯放入模型中。 例如:

Ext.define('MyModel', { 
    extend: 'Ext.data.Model', 
    fields: ['field1', 'field2'], 
    validations: [ 
     { type: 'presence', field: 'field1' } 
    ] 
}); 

有關驗證配置的一些詳細信息: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.validations

但你需要一個小魔術他們與形式工作。這是(使用MVC)來自控制器的代碼:

onFormSave(): function() { 
    var form = this.form.getForm(), 
     updatedRecord = MyModel.create(); 
    form.updateRecord(updatedRecord); //saved all the data from the form, to empty object 
    var errors = updatedRecord.validate(); //validate the object 
    if (errors.isValid()) { //if the object is valid, then save the data to the model associated with the form. 
     form.updateRecord(form.getRecord()); 
    } 
    else { 
     form.markInvalid(errors); 
    } 
} 

邏輯內,這是非常簡單的,我創建該對象的一個​​新實例,並驗證它。如果驗證正確,則將數據保存到表單中的對象,如果不是,則顯示錯誤。