まだ取得中のバックボーン 0.9.2{add: true}
とマリオネット 1.0.0.b4を使用しています。
したがって、シナリオは、ページの読み込み時にコレクションを画面にレンダリングすることです (これはうまく機能します)。ここで、別のフェッチ呼び出しでそのコレクションに追加したいと思います。
私が理解しているすべてのことから、marionette.js は毎回 add 関数を reset 関数でオーバーライドします。
initializeEvents 関数を調べて、「リセット」イベントを独自のイベントにバインドしました。私のイベント内では、まだthis.collection.add();
呼び出していないため、データをテンプレートにレンダリングしないことを除いて、うまく機能しますthis.render();
。
これはそれが吸うところです。だから私は呼び出すthis.render();
と、データをレンダリングします。わーい!しかし、次のフェッチthis.render()
でデータがリセットされます(マリオネットには、追加する代わりに常にリセットする独自のレンダリング機能があると思います)
initialEvents: function () {
if (this.collection) {
this.bindTo(this.collection, "add", this.addChildView, this);
this.bindTo(this.collection, "remove", this.removeItemView, this);
this.bindTo(this.collection, "reset", this.resetted, this);
}
},
resetted: function (item, collection, options) {
// this works, but doesnt render data into the template, just empty divs
this.collection.add();
// this.render() resets the collection.
this.render();
},
Item = collection (with all my data)
Collection = {} (literally)
options = undefined
はい、resetted が最悪の関数名であることはわかっていますが、その sudo コードは何でも構いません。
マリオネット「collectionEvents」も試しましたが、レンダリングが発生した後にこれらの火災が発生することがわかりました。