2012-08-07 70 views
0

我遇到了麻烦,我很想绕过它,并且会喜欢一些指导。Backbone.js:为每个模型添加验证

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

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

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

如何扩展骨干模型以在每个模型中包含此验证函数?

回答

2

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

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

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

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

或者,你仍然立足于Backbone.Model并直接使用_.extend

+0

啊,这很有道理。现在尝试。谢谢! – hookedonwinter 2012-08-07 23:03:15

1

尽管伟大的解决方案@ggozad表明你总是可以在验证逻辑移动到像一个共享功能:

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

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

您还必须复制在每个类别的validate线,但我认为是干的足够。

+0

太棒了,我也很喜欢这个。谢谢! – hookedonwinter 2012-08-08 15:45:52