我遇到破坏Marionette控制器的问题。我还在围绕着Marionette缠绕我的大脑,更具体地说是Backbone垃圾收集....
此控制器实例化多个视图,每个视图可能有几个绑定的事件侦听器。代码看起来像这样:
myController.js
---------------
Marionette = require('backbone.marionette');
MyView = require('path/to/myView');
var MyController = Marionette.Controller.extend({
initialize: function(options) {
console.log('init');
}
onDestroy: function() {
console.log('should be destroyed');
}
showData: function() {
console.log('create view');
myView = new MyView();
}
});
appController.js
----------------
MyController = require('path/to/myController');
var controller = new MyController()
controller.showData();
controller.destroy();
output:
//init
//create view
//should be destroyed
控制器仍然存在,即使onDestroy发生了......
对于仍然具有绑定事件侦听器的视图,这可能是一个问题吗?如果代码看起来很奇怪,我很抱歉......从coffeescript转换它。
答案 0 :(得分:1)
要调用destroy方法,Marionette控制器有一个"关闭"在其原型上定义的方法:
controller.close();
调用的方法是onClose
。
有关信息,您可以在控制台中查看: