我在缠绕这个问题时遇到了麻烦,并希望得到一些指导。
我有一个admin crud应用程序,我希望以类似的方式验证所有模型。当我在验证函数中使用它时,我用于验证的代码工作正常:
var ModelName = Backbone.Model.extend({
// ...
validate: function (attrs) {
// stuff happens
return errors;
}
});
但是,我想在每个模型上使用验证,并且不想在每个模型中使用相同的代码重复自己。
如何扩展Backbone模型以在每个模型上包含此验证功能?
答案 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
行,但我认为已经足够干了。