Lor*_*ard 3 javascript backbone.js marionette
我正在使用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.
}
});
Run Code Online (Sandbox Code Playgroud)
(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?
}
});
Run Code Online (Sandbox Code Playgroud)
1)正如你所说,onRender它只是一个在渲染视图后调用的回调函数.
serializeData必须返回一个有效的JSON对象,如Backbone Marionette文档中所述:
如果需要为数据自定义序列化,可以在视图上提供serializeData方法.它必须返回一个有效的JSON对象,就像您在模型或集合上调用.toJSON一样.
Backbone.Marionette.ItemView.extend({
serializeData: function(){
return {
"some attribute": "some value"
}
}
});
Run Code Online (Sandbox Code Playgroud)
2)IMO,答案是肯定的.在Backbone Marionette文档中,它说:
CollectionView:自动渲染
集合视图绑定到指定集合的"添加","删除"和"重置"事件.
当视图的集合被"重置"时,视图将自己调用渲染并重新渲染整个集合.
将模型添加到集合时,集合视图会将一个模型呈现到项目视图集合中.
从集合中删除模型(或销毁/删除)时,集合视图将关闭并删除该模型的项目视图.
| 归档时间: |
|
| 查看次数: |
8105 次 |
| 最近记录: |