我試圖創建一個使用一個骨幹型號:如何創建可能在創建時無效的主幹模型?
var newUser = new App.User({
name: $('input[name=new_user_name]').val(),
email: $('input[name=new_user_email]').val()
});
與以下驗證:
App.User = Backbone.Model.extend({
validate: function(attrs) {
errors = [];
if (_.isEmpty(attrs.name)) {
errors.push("Name can't be blank");
}
if (_.isEmpty(attrs.email)) {
errors.push("Email can't be blank");
}
return _.any(errors) ? errors : null;
},
...
});
然而,當文本框的值是空的,該模型不能因爲創建驗證失敗。
有沒有一種方法來創建模型和運行isValid()
檢查值是否正確?還是有其他一些方法可以在模型創建之前運行驗證?
從backbone model creation code看來,如果驗證失敗,它會拋出異常Error("Can't create an invalid model")
,但是有可能在手之前檢查驗證嗎?
我是新來的骨幹,但在我看來像它被傳遞選項'無聲:TRUE'到'set'方法,與設定方法傳遞該選項來驗證,和一個truthy無聲屬性繞過驗證:http://documentcloud.github.com/backbone/docs/ backbone.html#部分-55 – Shad 2012-03-14 21:51:23
我相信{沉默:真正}僅適用於抑制由改變模型觸發的事件。所以如果我model.set({name:'orange'},{silent:true});它將阻止模型更改事件觸發,因此,將對此模型的更改事件作出反應的任何偵聽器都不會執行。如果您有一個視圖綁定到模型更改並相應地反映更改,這很方便。例如。 model.bind(「變」,this.onChange,這一點) – jmk2142 2012-03-15 02:43:11