奇妙な理由で、モデルの検証で文字列を返すときに、モデルがまだ属性を設定しています。これが私のコード検証コードです:
Model = Backbone.Model.extend({
validate: function( attributes ){
var tax = attributes.tax;
if(tax.amount < 0.0 || typeof tax.amount !== "number"){
return "The tax amount cannot be negative and must be a number.";
}
},
defaults: {
"tax": {
"amount": 100
}
},
setTax: function(amount){
var tax = this.get("tax");
tax.amount = amount;
this.set("tax", tax);
}
})
次に、モデルにエラーイベントをリッスンさせ、コンソールにログを記録させます。
model = new Model();
View = Backbone.View.extend({
initialize: function(){
this.model.on('error', function(model, error){
console.log("ERROR: " + error);
})
}
});
view = new View({model: model});
view.model.setTax(-100);
コンソールログは印刷されていますが、何らかの理由でモデルはまだプロパティを設定しています。モデルにプロパティを設定させないために返す必要があるものはありますか?Backbone.jsドックによると、検証から何かを返す場合は、プロパティを設定しないと想定されています。Backbone.jsバージョン0.9.2を使用しています