我開發了一個jquery & backbone.js web應用程序。
一個組件有一個html表,在這個表的後面是一個backbone.js集合。
這個集合中的任何變化應導致HTML表的更新,所以我寫backbone.js收集事件
this.collection.bind("reset add remove", this.renderRows, this);
所以我更新HTML表,當整個收集得到新的,當一個新的模式被添加和當模型被刪除。
還有一個細節視圖組件,當用戶懸停並點擊某個html表格的某一行時,該組件會被調用。在此組件的開始,我得到正確的模型從集合中
changeModel = this.collection.get(id);
用戶已經改變了一些屬性後,我做
changeModel.set(attrs);
,並返回HTML表。集合中的模型具有正確的更改值。
但是html表沒有被更新,因爲3個事件(重置,添加,刪除)中沒有一個被觸發。
所以我說「取代」到集合結合
this.collection.bind("replace reset add remove", this.renderRows, this);
,並從細節視圖返回之前我叫
this.collection.trigger("replace");
我的解決方案的工作,但我的問題是:
是否有任何「原生」backbone.js解決方案已經存在,並且我已經錯過了,我不需要自己觸發某些東西?
謝謝。我認爲你應該在原始答案前加上一句話,比如說:「自從我首次寫這篇文章以來,Backbone增加了一些便利,如果你使用的是最新的Backbone,請參閱下面的UPDATE。」對於我們中的一些人來說,20多條看起來像答案的線條接近極限。再次感謝,樂於助人。 –
同意的「更新」應該在最上面,但是那些格式很好的20行解釋和代碼,我沒有問題通讀它。 – Gal