Backbone的屬性驗證有2種方法:
1.Backbone自帶簡單的驗證方法,但是驗證規則需要自己實現
通過validate()方法進行驗證,驗證規則寫在此方法里。
var RoomModel = Backbone.Model.extend({ validate:function(attrs){ //驗證規則 if(!attrs.name){ return "名字不能為空"; } } });
那么什么時候調用validate()完成驗證呢?
在調用save()方法時validate()方法被觸發,來完成驗證,如果validate()返回錯誤信息,那么save()方法會停止執行,模型的屬性也不會被更改。失敗的驗證還會觸發invalid事件。
如果在set()方法中傳入參數{validate:true},作為最后一個參數,也會觸發validate()方法,完成驗證。
var room =new RoomModel()
room.set('name','test',{validate:true})
以上都是屬性的自動驗證
屬性的手動驗證:room.isValid()//返回true/false,這種驗證不會觸發invalid事件
2.利用Backbone擴展插件Backbone.Validation進行屬性驗證,Backbone.Validation重寫了validate()方法,常用的驗證規則已經實現,可以直接使用,節約時間
首先要從GitHub網站上下載Backbone.Validation,然后引用文件backbone-validation.js。
使用Backbone.Validation.mixin來擴展Backbone.object():_.extend(Backbone.Model.prototype,Backbone.Validation.mixin)
在validation屬性中定義具體的驗證規則
var UserModel = Backbone.Model.extend({ validation:{ name:{ required:true }, email:{ pattern: 'email' } } });
驗證屬性:
1. required:驗證模型的某個屬性是否必須,值為true/false
2.acceptance:驗證某些事情是否被接收,值為true/false
3.min:驗證屬性值,必須為數字,模型某個屬性值只有大於或等於指定的最小值才能驗證成功
4.max:驗證屬性值,必須為數字,模型某個屬性值只有小於或等於指定的最大值才能驗證成功
5.range:驗證屬性值,必須為數字,模型某個屬性值只有等於指定的某個數值或者在指定的兩個值之間才能驗證成功
6.length:驗證屬性值,模型某個屬性值的長度必須為指定長度的字符串。
7.minLength:驗證屬性值,必須為數字,模型某個屬性值的長度只有大於或等於指定的最小值才能驗證成功
8.maxLength:驗證屬性值,必須為數字,模型某個屬性值的長度只有小於或等於指定的最大值才能驗證成功
9.rangeLength:驗證屬性值,必須為數字,模型某個屬性值的長度只有等於指定的某個數值或者在指定的兩個值之間才能驗證成功
10.one Of:用來驗證屬性值,必須等於指定的數組當中的一個元素,是區分大小寫的
11.equalTo: 驗證等於指定另外一個的屬性值
12.pattern:驗證匹配指定的模式,模式可以是正則表達式,也可以是內置的模式名稱
內置模式名稱:
number:匹配任意十進制的數字
digits:匹配任意數字序列
email:匹配合法的郵件地址
url:匹配任意合法的URL