我在销毁 Marionette Controller 时遇到问题。我仍在思考 Marionette,更具体地说是 Backbone 垃圾收集......
该 Controller 实例化多个 View ,每个 View 可能有多个绑定(bind)事件监听器。代码看起来像这样:
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
Controller 仍然存在,尽管 onDestroy 确实触发了..
这可能是 View 仍然具有绑定(bind)事件监听器的问题吗?如果代码看起来很奇怪,我很抱歉...这是从 Coffeescript 翻译的。
最佳答案
为了调用 destroy 方法,Marionette Controller 在其原型(prototype)上定义了一个“close”方法:
controller.close();
调用的方法是onClose
。
有关信息,您可以在控制台中检查:
关于javascript - Backbone.js - 销毁 Marionette Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27628998/