0
我试图在我的代码的其他部分触发“page:change:after”事件时重新呈现一个Marionette ItemView。我试图做它在两个方面:Backbone marionette render
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的回调确实运行(我可以在控制台上看到“页面:更改:检测到后”)。我还添加了一个打印出“onRender!”的onRender方法当我使用#2,但不是#1。它看起来像是没有用#1渲染。有人能提供一些有关这种行为的见解吗?
下面是一个更完整的代码片段,以提供更好的情境:
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!")
}
});
是的,你:我认为这会工作,可能是清洁的,因为你可以得到完全摆脱自我的 - 问题
那说的是绝对正确的。我怎么能看不到!谢谢。 – nsxtasy 2014-09-03 20:22:33