Backbone.js:为每个模型添加验证

时间:2012-08-07 22:29:40

标签: javascript validation backbone.js

我在缠绕这个问题时遇到了麻烦,并希望得到一些指导。

我有一个admin crud应用程序,我希望以类似的方式验证所有模型。当我在验证函数中使用它时,我用于验证的代码工作正常:

var ModelName = Backbone.Model.extend({
    // ...
    validate: function (attrs) {
        // stuff happens
        return errors;
    }
});

但是,我想在每个模型上使用验证,并且不想在每个模型中使用相同的代码重复自己。

如何扩展Backbone模型以在每个模型上包含此验证功能?

2 个答案:

答案 0 :(得分:2)

您可以通过“子类化”轻松完成此操作,例如

var Validatable = Backbone.Model.extend({
    validate: function (attrs) {
        // stuff happens
        return errors;
    }
});

var ModelOne = Validatable.extend({
   ...
});

var ModelTwo = Validatable.extend({
   ...
});

或者,您仍然依据Backbone.Model并直接使用_.extend

答案 1 :(得分:1)

尽管@ggozad提供了很好的解决方案,但您总是可以将验证逻辑移动到共享功能,如:

var Utils = {}
Utils.validateSomething = function( attributes ){
  // stuff happens
  return errors;
}

var ModelName = Backbone.Model.extend({
  validate: Utils.validateSomething
});

你仍然需要在每个班级中复制validate行,但我认为已经足够干了。