我在破坏木偶控制器时遇到问题。我仍在全神贯注于木偶,更具体地说是骨干垃圾收集...。

该控制器实例化几个视图,每个视图可能具有多个绑定的事件侦听器。代码看起来像这样:

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确实触发,控制器仍在附近。

如果视图仍然具有绑定的事件侦听器,这可能是一个问题吗?如果代码看起来很奇怪,我深表歉意。

最佳答案

为了调用destroy方法,Marionette控制器在其原型上定义了一个“关闭”方法:

controller.close();


调用的方法是onClose

有关信息,您可以在控制台中进行检查:

关于javascript - Backbone.js-破坏 Marionette Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27628998/

10-12 15:42