我正在关注this tutorials on tutsplus.com它看起来非常简单,但是当我运行 person.set('age', -27);
时,它不会返回 false,而是将属性设置为负值。我看了backbone documentation on validate以及网上的一些帖子,看起来应该可行?我知道我还无法取回返回字符串。
这是我的 js,除非我一直遗漏某些内容,否则它与视频完全相同:
var Person = Backbone.Model.extend({
defaults: {
name: 'John Doe',
age: 30,
occupation: 'worker'
},
validate: function(attrs) {
if ( attrs.age < 0 ) {
return 'Age must be positive, stupid.';
}
},
work: function() {
return this.get('name') + ' is working.';
}
});
读到一些地方说不要通过silent: true
,我不认为我是......至少在我的代码中没有明确地......
最佳答案
正如 @xat 和 @mu 所指出的那样,问题是过时的视频 - 尽管一些早期的视频已更新到最新版本。 9.10 的变更日志指出:
模型验证现在仅在 Model#save 中默认强制执行,并且在构造时或 Model#set 中不再默认强制执行,除非传递了 {validate:true} 选项。
所以我决定通过 validate:true
并使用 Model#save
进行测试,并且每个都有效。
谢谢大家!
关于javascript - Backbone.js 非常简单的验证模型不起作用 - 遵循 webtuts 教程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15181390/