【问题标题】: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 行,但我认为已经足够干了。

    【讨论】:

    • 太棒了,我也喜欢这个。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多