2014-12-02 64 views
0

我的屏幕上有一個按鈕,它將用戶信息預先填充到我設置的集合中。事實上,這工作實在太好了。每次用戶點擊按鈕時,都會添加一個新模型。爲了防止用戶向這個集合中添加多個模型,我想檢查一下,以確保集合中的一個屬性與我想要傳入的屬性不同。如果這是有道理的。確保重複的模型不會被添加到集合

我的目標看起來像這樣

var object = { 
    First: first, 
    Second: second 
}; 

,我將它像這樣

this.app.user.get(type).add(object); //My type is what collection is being passed to it 

我再從每個模型在搶奪財產「第二」屬性

var dup = this.app.user.get(type).map(function(model){ 
    return model.get('Second'); 
}); 

我在做什麼麻煩看到我的財產addressTo(這只是一個字符串)等於一個那個dup對象內的東西。我已經嘗試了一些東西,但是沒有什麼能讓我走得很遠,並且最終打破了更多的東西。

任何幫助,將不勝感激!

回答

0

當你wan't使用你的數組,你可以使用下劃線來檢查,如果數組包含的元素(下劃線爲骨幹的核心依賴性,所以你有它已;)):

_.contains(dup, obj.addressTo) 

否則,你也可以直接使用集合:

collection.where({ 'Second': obj.addressTo }).length > 0 
+0

obj的,是一個變量或它必須在那裏?我在問,因爲它告訴我它沒有定義。 – zazvorniki 2014-12-02 16:14:18

+0

我把它命名爲'obj',使你的'object''變量'是一個保存關鍵字(它是每個對象的類型)。 – 2014-12-02 16:16:05

+0

這是一個保留在骨幹關鍵字?即使該變量被改變了,if語句也總是返回false。那是因爲'dup'是一個對象而addressTo是一個字符串? – zazvorniki 2014-12-02 16:21:41

0

你必須對模型和骨幹的define an id property會在乎重複你。 Here is關於add方法的更多細節。

而小例如它的工作原理:

var Type = Backbone.Model.extend({ 
    idAttribute: 'Second' 
}); 
var types = new Backbone.Collection([{ First: 1, Second: 11 }], {model: Type}) 

types.add(new Type({ First: 1, Second: 11 })); 
types.add(new Type({ First: 2, Second: 22 })); 
types.add(new Type({ First: 2, Second: 22 })); 

console.log(types.length); // 2 
+0

雖然我不想將它添加爲新集合。我'[更新以前的集合 – zazvorniki 2014-12-02 16:12:11

+0

@zazvorniki,然後想象'types'是對現有集合的引用。這裏只有一個限制 - 你的集合應該使用'model'選項來創建,它描述了'idAttribute' – 2014-12-02 16:16:34

+0

我不認爲這是行得通的,因爲我投入集合的模型來自另一個模型,我不能改變這些,因爲ID是動態的,取決於我扔的地方。 – zazvorniki 2014-12-02 16:23:22