昨天,經過很多研究,我發現如果我不想在我的主幹模型上設置單獨的屬性(並驗證),那麼我需要發送{silent: true}
。這就是說,我們還發現,在下一版本的backbone.js silent: true
實際上仍然會運行驗證。如何在Backbone.js(驗證)中設置單個屬性
問題在於,驗證塊是從實際設置屬性中設置的。所以,如果我們沒有沉默:真的,那麼接受單個屬性的設置方法就沒有意義了。要解決此問題,我們的驗證方法如下所示:
validate : function(attrs) {
var errors = {};
if (typeof attrs.first_name !== 'undefined' && !attrs.first_name) {
errors.first_name = "First name can't be empty";
}
...
if (!_.isEmpty(errors)) {
return errors;
}
}
這會導致保存失效。於是我們決定寫這樣的事:
if (_.isEmpty(attrs)) {
attrs = this.attributes;
}
有這個問題,如果你有保存,那麼你需要合併他們,我的猜測是確定派往屬性,但是這畢竟是一個體面工作量,以獲得一些簡單的驗證工作/或不運行。此外,除非我重寫_validate,否則我需要在每個模型上執行此操作。
有沒有更好的方法來做到這一點?
您可以創建一個對象,其行爲與mixin類似,然後您可以使用它擴展每個模型。 – Eru