1

我正在关注tutsplus.com 上的本教程,它看起来非常简单,但是当我运行person.set('age', -27);它时它不会返回 false,而是将属性设置为负值。我查看了关于 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我认为我不是......至少在我的代码中没有明确......

4

1 回答 1

1

正如@xat 和@mu 所指出的那样,这个问题是一个过时的视频——尽管一些早期的视频已更新到最新版本。9.10 的变更日志指出:

Model validation is now only enforced by default in Model#save and no longer enforced by default upon construction or in Model#set, unless the {validate:true} option is passed.

所以我决定通过validate:true并进行测试,Model#save并且每个都有效。

多谢你们!

于 2013-03-03T02:57:58.380 回答