javascript - Backbone.js - 销毁 Marionette Controller

标签 javascript backbone.js marionette

我在销毁 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

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

enter image description here

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

相关文章:

javascript - 构建 BackboneJS 事件集合时出错 - new Event() 抛出错误

javascript - Backbone.Collection fetch 的竞争条件

javascript - 如何在 React 中再次加载相同的组件?

javascript - 使用 CKeditor 工具获取电子邮件上的 HTML 标签后

javascript - 当我使用 jquery 发送发布数据时,清理数据的正确方法是什么?

php - 如何使用 JQuery/AJAX 向 URL 添加参数

javascript - Backbone - 在初始化集合模型时传递数据

backbone.js - Backbone中的项目 View 和布局中的额外div

backbone.js - 将 CompositeView 中的区域用于 subview

javascript - 单一责任原则和Backbone.View