【发布时间】:2012-08-30 22:05:08
【问题描述】:
我有一个带有搜索面板和结果数据集合的 Marionette CompositeView。
我想在以下情况下调用函数:
- 搜索面板已呈现。
- 该集合尚未呈现。
- 在呈现集合时不应调用此函数。
我是这样做的:(但是“afterRender”函数被调用了两次)
// VIEW
App.MyComposite.View = Backbone.Marionette.CompositeView.extend({
// TEMPLATE
template: Handlebars.compile(templates.find('#composite-template').html()),
// ITEM VIEW
itemView: App.Item.View,
// ITEM VIEW CONTAINER
itemViewContainer: '#collection-block',
//INITIALIZE
initialize: function() {
this.bindTo(this,'render',this.afterRender);
},
afterRender: function () {
//THIS IS EXECUTED TWICE...
}
});
我该怎么做?
===========================编辑==================== ===============
我就是这样解决的,如果你有意见请告诉我。
// VIEW
App.MyComposite.View = Backbone.Marionette.CompositeView.extend({
//INITIALIZE
initialize: function() {
//this.bindTo(this,'render',this.afterRender);
this.firstRender = true;
},
onRender: function () {
if (firstRender) {
//DO STUFF HERE..............
this.firstRender = false;
}
}
});
【问题讨论】:
-
请提供有关您的事件绑定以及何时调用渲染器的更多详细信息
-
在初始化函数中:"this.bindTo(this,'render',this.afterRender)"。我不确定这是否正确,但我想做的是在视图渲染后调用“afterRender”函数