2014-02-14 24 views
1

驗證我有這樣如何寫在煎茶觸摸/ Ext JS的模型

Ext.define('app.model.TeamEmpAssignment', { 
      extend : 'Ext.data.Model', 
      config : { 
       idProperty : 'teamEmpId', 
       fields : [{ 
         name : 'teamEmpId', 
         type : 'int' 
        }, { 
         name : 'actName' 
        }, { 
         name : 'beginDateTime' 
        }, { 
         name : 'endDateTime' 
        }, 

       ], 

       validations : [{ 
         field : 'beginDateTime', 
         type : 'presence', 
         message : 'Effective Begin Date Time required' 
        }, { 
         field : 'endDateTime', 
         type : 'presence', 
         message : 'Effective End Date Time required' 
        }, 
       ], 

      } 

     }); 

我必須寫一個驗證來比較endDateTime模型>的startDateTime

我想煎茶觸摸2.3。 1

回答

0

我知道這是一個老問題,但我在處理同樣的問題時遇到了問題,並想分享我的方法。

我創建的模型的方法,它執行自定義驗證,是這樣的:

Ext.define('app.model.TeamEmpAssignment', { 
    extend : 'Ext.data.Model', 
    config : { 
     // config here 
    }, 

    checkDates: function (errors) { 
     // assuming the dates are timestamps 
     if (this.get('beginDateTime') > this.get('endDateTime')) { 
      errors.add(Ext.create('Ext.data.Error', { 
       field : 'beginDateTime', 
       message: 'Begin date can\'t be after end date' 
      })); 
     } 
    } 

}); 

你會發現,checkDates有一個參數 - 錯誤。這個參數實際上是由模型的validate方法返回的Ext.data.Errors對象。因此,我們可以這樣做:

var record = Ext.create('Ext.data.Errors'); 
// set some values here 
var errors = record.validate(); 
record.checkDates(errors); 

console.log(errors.isValid()); 

我們可以使用isValid方法,因爲它是所有檢查Ext.data.Errors集合是否有物品。

我目前正在使用它,但它會很容易覆蓋驗證方法,所以你不必調用自定義驗證externaly。

Ext.define('app.model.TeamEmpAssignment', { 
    extend : 'Ext.data.Model', 
    config : { 
     // config here 
    }, 

    checkDates: function (errors) { 
     // assuming the dates are timestamps 
     if (this.get('beginDateTime') > this.get('endDateTime')) { 
      errors.add(Ext.create('Ext.data.Error', { 
       field : 'beginDateTime', 
       message: 'Begin date can\'t be after end date' 
      })); 
     } 
    }, 

    validate: function() { 
     var errors = this.callParent(arguments); 

     this.checkDates(errors); 

     return errors; 
    } 

}); 
0

驗證類型來自Ext.data.validations單例。你可以在這裏添加你自己的驗證器,但是這個方法並不提供模型中的所有字段(它聽起來像你將需要)。我們建議將你的驗證器移動到不同的地方(模型外部),也許在相關的表單組件上(加載之後或保存之前)。