Backbone.js - 摧毁木偶控制器

时间:2014-12-23 22:32:01

标签: javascript backbone.js marionette

我遇到破坏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转换它。

1 个答案:

答案 0 :(得分:1)

要调用destroy方法,Marionette控制器有一个"关闭"在其原型上定义的方法:

controller.close(); 

调用的方法是onClose

有关信息,您可以在控制台中查看:

enter image description here