【发布时间】:2014-09-03 18:08:38
【问题描述】:
当我的代码的其他部分触发“page:change:after”事件时,我正在尝试重新渲染 Marionette Itemview。我尝试了两种方式:
1.
self.listenTo(this.paginatedCollection,"page:change:after",function(){
console.log("page:change:after detected!!!!!!!!!!!!!!!!!!");
self.render;
});
2.
this.listenTo(this.paginatedCollection,"page:change:after",self.render);
由于某种原因,#2 有效,但 #1 无效。 #1回调中的控制台日志确实运行了(我可以在我的控制台上看到“page:change:after detected”)。我还添加了一个打印出“onRender!”的 onRender 方法。当我使用#2而不是#1时。看起来视图没有使用 #1 渲染。有人可以提供一些关于这种行为的见解吗?
这里有一个更完整的代码 sn-p 来提供更好的上下文:
Views.PaginationControls = Marionette.ItemView.extend({
template: "#contact-paginator",
initialize: function(options){
var self = this;
this.paginatedCollection = options.paginatedCollection;
//why is this not working?
self.listenTo(this.paginatedCollection,"page:change:after",function(){
console.log("page:change:after detected!!!!!!!!!!!!!!!!!!");
self.render;
});
//this works
this.listenTo(this.paginatedCollection,"page:change:after",self.render);
},
onRender: function(){
console.log("onRender!")
}
});
【问题讨论】:
标签: backbone.js rendering marionette backbone-views backbone-events