我正在使用我的App.vent对象来处理我的Controller和LayoutView之间的一些问题。我的LayoutView包含:
events:{
'click @ui.addQuestion': 'addQuestion'
},
addQuestion: function(e){
var newModel = new App.ActivitySetupModule.Entities.Question();
App.vent.trigger('activity:questions:add:question', newModel)
}
这个LayoutView在我的应用程序的'mainRegion'区域内进行交换,就像在Controller中一样:
this.activityLayoutView.mainContentRegion.show(this.LayoutView);
在控制器中也是Vent听:
App.vent.on('activity:questions:add:question', function(model){
// ajax call
}
问题是,每当我换掉LayoutView转到一个新的部分时,每次我点击addQuestion按钮时都会调用ajax调用。因此,如果我来到这个页面3次显示布局视图,那么它将进行3次ajax调用。但是如果我在addQuestion函数中放置一个console.log,它只会显示ONCE。所以我不明白。这是僵尸视图的情况吗?我有理由不绑定和监听布局视图对象,所以我希望在这里使用vent。
答案 0 :(得分:0)
原因是我的App.vent.listener位于控制器初始化程序的回调中。成功获取集合后,多次调用回调,因此每次控制器初始化时都会绑定。由于App并没有被自己清除,我也没有这样做..没有清理。