我正在使用Marionette.CompositeView
并且我想根据这两个示例(1)和(2)来了解 serializeData 和 onRender 之间的区别。
根据文档,在应用模板之前在渲染中调用 serializeData,在应用模板之后在渲染中调用 onRender。
我的问题是:
1)为什么示例(1)有效而(2)无效?
2)如果我重置集合,会Marionette.CompositeView
重新渲染吗?
请参阅代码中的注释以获取更多详细信息。
(1)
return Marionette.CompositeView.extend({
initialize: function () {
this.collection = new MyCollection();
this.collection.fetch();
},
onRender: function () {
this.collection.length > 0 ? this.$el.show() : this.$el.hide();
// it returns this.collection.length > 0
// differently from serializeData.
}
});
(2)
return Marionette.CompositeView.extend({
initialize: function () {
this.collection = new MyCollection();
this.collection.fetch();
},
serializeData: function () {
this.collection.length > 0 ? this.$el.show() : this.$el.hide();
// it returns this.collection.length = 0
// even if this.collection.length > 0. Why?
}
});