Javascript Controller 加载/卸载

标签 javascript jquery

这些问题中的大多数都没有非常全面的答案。

在我的应用程序中,我决定调用当前加载的任何 Controller ,如 $app.ctrl

现在,当我将 $app.ctrl 设置为 null 时, Controller 创建的任何事件会怎样?

例如,我的应用可能会像这样加载一个 Controller :

loadController : function(controller){
    $app.ctrl = null;
    var s = document.createElement('script');
    s.setAttribute('src', $app.ctrl_path+controller);
    s.className = 'ctrl';
    s.onload= function(){
        $app.ctrl = $ctrl;
        $app.ctrl.initialize();
    };
    document.body.appendChild( s );
},

如何清理事件和实例化插件?如果我的 Controller 使用 jQuery 插件并添加事件监听器和 sech 做了很多讨厌的事情怎么办? GC 真的会破坏这些事件,还是它们会 secret 潜伏,等待造成破坏:(令人惊讶的是,它们确实如此)

var $ctrl = {

    initialize : function(){
        $(window).on('resize',function(){
            alert('you resized');
        });
    }

};

那么这里的解决方案是什么?我的 $app 对象是否应该为事件定义 setter 和 getter,并为 Controller 定义一个干净的方法?那么 Controller 会破坏列表目标及其事件吗?好困惑。

我认为在 2015 年 javascript 在每个现代浏览器中都毫无值(value)是可悲的。

最佳答案

解决方案是使用 .off() 调用取消初始化函数:

引用:

https://api.jquery.com/off/

关于Javascript Controller 加载/卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32164490/

相关文章:

javascript - 使用 Phonegap : InvalidCastException 上传图片

javascript - 在 JavaScript 中使用数组代替对象

javascript - JQuery 简单切换不起作用

javascript - HTML 表单操作 - "Order of Operation"

javascript - 如何在javascripts中获取唯一的对象数组

javascript - HTML5 日期验证

javascript - 在 Bootstrap timepicker 中更改小时格式

javascript - noUIslider 在 web component-polymer 3(litelement) 中不起作用

javascript - 在通过 jquery 或 ajax 加载内容之前显示加载图像

javascript - 我想把这个随机函数改为onclick函数