2013-03-11 58 views
2

我希望我的模型驗證重複條目,所以我需要在模型中訪問集合。BackboneJS:collection.pluck()在模型驗證

我使用Backbone.JS與Require.JS一起,這使得它有點混亂。 我似乎無法加載我的收藏作爲模塊的依賴。

我試圖在視圖中進行驗證,但我想最好的做法是保持它應該在模型中的驗證。

有什麼建議嗎?

回答

2

從骨幹網收集docs

如果要添加的模型有已在集合中的集合,它們將被忽略,除非你通過{合併:真正} ...

其中在add - 方法轉化爲this

if (existing = this.get(model)) { 
    if (options.merge) { 
    existing.set(attrs === model ? model.attributes : attrs, options); 
    if (sort && !doSort && existing.hasChanged(sortAttr)) doSort = true; 
    } 
    continue; 
} 

基本上將ŧ臀部添加任何具有重複的模型idcididAttribute

如果這還不夠,那麼我建議你在視圖中進行驗證,因爲將模型的集合作爲依賴於該確切模型會引入循環依賴,例如。你需要這個集合能夠編譯這個模型,但是你也需要這個模型來編譯這個集合。

因此,如果您需要確保未將模型添加到與該集合中已有的模型具有完全相同屬性的集合中,請在視圖中執行此操作。它看起來像這樣:

if (collection.where(modelToBeAdded.toJSON()).length == 0) { 
    collection.add(modelToBeAdded); 
} 
+0

謝謝。我只是想確保在視圖內部進行驗證不被認爲是'hack-ish'實現。我實際上有兩個鍵,比如key1和key2,它們在集合中必須是唯一的。假設存在一個模型,其中key1爲123,key2爲456,新模型不能讓key1爲456,並且在模型中似乎沒有辦法做到這一點。 – mushroom 2013-03-11 13:50:54