我正在創建一個簡單的文件夾列表,點擊時將標記爲選中,即他們的模型將其selected
屬性更改爲true。我希望此選擇是排他性的 - 所有其他文件夾都應該在標記爲選定文件夾之前標記爲未選中。Backbone:如何使用單個命令更新所有模型的屬性
對了,我可以想到通過集合循環來改變每個模型的屬性。有沒有更簡單的方法可以實現這個目標?
我正在創建一個簡單的文件夾列表,點擊時將標記爲選中,即他們的模型將其selected
屬性更改爲true。我希望此選擇是排他性的 - 所有其他文件夾都應該在標記爲選定文件夾之前標記爲未選中。Backbone:如何使用單個命令更新所有模型的屬性
對了,我可以想到通過集合循環來改變每個模型的屬性。有沒有更簡單的方法可以實現這個目標?
在我正在進行的一個項目中,我們在集合級別維護'selected'項目。我們添加了getCurrent()
和setCurrent(model)
方法,收集將引發一個change:selection
事件。這對我們來說真的很好。
- 編輯:每個請求的代碼示例.--
以下是我們base.collection.js這是我們爲我們的所有藏品延伸的一部分。你會注意到我們可以根據id或實際模型設置電流,所以col.setCurrent(123)
和col.setCurrent(anInstanceOfAModel)
都可以工作。也呼籲setCurrent
爲已經是當前模型不會觸發更改事件
setCurrent: function (id)
{
var isModel = !(_.isString(id) || _.isNumber(id));
var triggerChange = this._setupCurrent(isModel
? id
: this.get(id));
if (triggerChange)
this.trigger("change:current", this._current);
return this.getCurrent();
},
getCurrent: function()
{
return this._current;
},
_setupCurrent: function (current)
{
var old = this._current;
this._current = current;
if (current && old && old.id == current.id)
return false;
return true;
},
您還可以有一個「狀態」對象,您可以在其中存儲上次選擇的文件夾。
然後,您將其中一個更改回未選中狀態,而無需遍歷整個集合。
您的模型是否也有'selected'屬性? OP似乎對此感到疑惑。 –
不是 - 主要是因爲我覺得它很尷尬(因爲它似乎是OP)必須遍歷每個項目才能解除它們。 – timDunham
@timDunham反正你可以發佈代碼示例?我正在嘗試做一些與你所完成的非常相似的事情。提前致謝! ;) – muffs