0

我很难解决这个问题,并且希望得到一些指导。

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

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

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

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

4

2 回答 2

2

您可以通过“子类化”轻松做到这一点,例如,

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

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

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

或者,您仍然基于Backbone.Model_.extend直接使用。

于 2012-08-07T22:57:30.937 回答
1

尽管@ggozad 提供了很好的解决方案,但您始终可以将验证逻辑移至共享函数,例如:

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

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

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

于 2012-08-07T23:19:52.403 回答