2013-03-13 20 views
0

我使用的是Backbone 0.9.10。Backbone中驗證錯誤的解決方法0.9.10

var Person = Backbone.Model.extend({ 
    defaults: { 
     name: "John Doe", 
     age: 30 
    }, 
    validate: function (attrs) { 
     if (attrs.age < 0) { 
      console.log("Age must be positive, idiot!"); 
     }; 
    } 
}); 

如果我這樣做是在控制檯上...

var p = new Person; 
p.set("age", -20, {validate: true}); 

...我的模型被仍會更新。我怎樣才能防止呢?

我知道there's an issue open,但是有沒有解決方法?或者我需要等待bug修復?

回答

3

的問題是,你要set調用使用屬性名稱Age(大寫A),而不是age

p.set("age", -20, {validate: true}); 

此外,當validate失敗,則應該返回其他的東西比undefined

validate: function (attrs) { 
    if (attrs.age < 0) { 
     return "Be more positive!"; 
    } 
} 
+1

在撰寫問題時,資本「年齡」只是一個錯字。我現在編輯了它。這不是我的情況的真正問題。但我不知道的是,我需要返回除「未定義」以外的東西才能工作。謝謝! – 2013-03-13 20:06:13