2012-08-07 85 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