【问题标题】:Backbone.js: Add validation to every modelBackbone.js:为每个模型添加验证
【发布时间】:2012-08-07 22:29:40
【问题描述】:
我无法解决这个问题,希望得到一些指导。
我有一个管理 crud 应用程序,我想以类似的方式验证所有模型。当我在验证函数中使用它时,我用于验证的代码可以正常工作:
var ModelName = Backbone.Model.extend({
// ...
validate: function (attrs) {
// stuff happens
return errors;
}
});
但是,我想在每个模型上使用验证,并且不想在每个模型中重复使用相同的代码。
如何扩展主干模型以在每个模型上都包含此验证功能?
【问题讨论】:
标签:
javascript
validation
backbone.js
【解决方案1】:
您可以通过“子类化”轻松做到这一点,例如,
var Validatable = Backbone.Model.extend({
validate: function (attrs) {
// stuff happens
return errors;
}
});
var ModelOne = Validatable.extend({
...
});
var ModelTwo = Validatable.extend({
...
});
或者,您仍然基于Backbone.Model,直接使用_.extend。
【解决方案2】:
尽管@ggozad 提供了很好的解决方案,但您始终可以将 验证逻辑 移至共享函数,例如:
var Utils = {}
Utils.validateSomething = function( attributes ){
// stuff happens
return errors;
}
var ModelName = Backbone.Model.extend({
validate: Utils.validateSomething
});
您仍然需要在每个班级中复制 validate 行,但我认为已经足够干了。