士官长
士官长
  • 发布:2016-02-19 11:04
  • 更新:2018-01-24 15:46
  • 阅读:1626

单页面应用中使用init这种快捷方法,遇到需要清除释放重新init的问题

分类:MUI
    $.init = function(options) {  
        isInitialized = true;  
        $.options = $.extend(true, $.global, options || {});  
        $.ready(function() {  
            $.doAction('inits', function(index, init) {  
                var isInit = !!(!inits[init.name] || init.repeat);  
                if (isInit) {  
                    init.handle.call($);  
                    inits[init.name] = true;  
                }  
            });  
        });  
        return this;  
    };

源码中使用 inits 来存放曾经已定义的 init 标志
默认有3个

5+: true  
iframe: true  
keyEventBind: true

当使用 init 方法定义了一个新的功能, 如pullRefresh ,inits会添加

5+: true  
iframe: true  
keyEventBind: true  
pullrefresh: true

单页面条件下mui.js只会利用requirejs加载一次,页面中对于一个容器使用init方法定义功能后,容器消逝释放掉后,inits里的没有自动释放, inits 是局部变量 ,我该如何去手动修改?
源码中1854行定义的 inits

2016-02-19 11:04 负责人:无 分享
已邀请:
士官长

士官长 (作者)

自己动手解决了,强烈建议有个清除inits这个内部变量的方法

            var options = {  
                pullRefresh: {  
                    container: '#ProjectDetailModule',  
                    down: {  
                        callback: this.pulldownRefresh  
                    }  
                }  
            };  
            MUI.options = MUI.extend(true, MUI.global, options || {});  
            MUI.ready(function() {  
                MUI.doAction('inits', function(index, init) {  
                    if (init.name.toLowerCase() == 'pullRefresh'.toLowerCase()) {  
                        init.handle.call(MUI);  
                    }  
                });  
            });

虽然代码好恶心,但是目前也没什么办法

士官长

士官长 (作者)

基本不用init了,自己写个调用执行逻辑,把上面的写成函数即可

戈饭

戈饭

同问,单页应用如何重新初始化

寒寒

寒寒

请问怎么清除 能说一下嘛

该问题目前已经被锁定, 无法添加新回复