我正在使用 Backbone 0.9.2,它仍然有{add: true}
一个 fetch 和 marionette 1.0.0.b4
所以场景是我在页面加载时在屏幕上呈现了一个集合(这很好用)。现在我想通过另一个 fetch 调用添加到该集合中。
据我所知,marionette.js 每次都会用重置函数覆盖 add 函数。
我查看了 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”,但在渲染发生后发现这些火灾。