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

标签 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,我不认为我是......至少在我的代码中没有明确地......

最佳答案

正如 @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/

相关文章:

Javascript 在工作线程中执行任务

javascript - Backbone.js View 中的 this.el 究竟是什么?

javascript - 有什么方法可以让两个 javascript 数组的内容变成 "join",就像我在 SQL 中做一个连接一样

javascript - 如何使对象解构元素的某些部分成为常量?

javascript - 如何将 Spring Mvc Controller 5 连接到 jsp 文件?

javascript - 在 Backbone JS 中保存后引用 "this" View 回调处理程序(成功或错误)的正确方法

javascript - 如何扩展继承Backbone.Events的类?

javascript - 更改 img 的来源

javascript - 如何在不重新加载页面的情况下重新加载外部 JavaScript 库

javascript - 从控制台检查元素