Backbone.js非常简单的验证模型不起作用 - 遵循webtuts教程

时间:2013-03-03 01:16:52

标签: javascript backbone.js

我关注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的地方,我不认为我......至少在我的代码中没有明确说明..

1 个答案:

答案 0 :(得分: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进行测试,每个都有效。

谢谢你们!