延迟和手动初始化mdl materialLayout

d-_*_*_-b 6 javascript angularjs material-design material-design-lite

奇怪的虫子.....

  • 我有一个竞争条件,我的angularJS指令用于header material-design-lite初始化布局drawer进行编译.

  • 只有当我关闭我的wifi并离线工作时才会发生这种情况.不需要远程资源,但谷歌标签管理器和Facebook连接插件在网络选项卡中失败.

问题:

  1. 我可以延迟MDL的自动初始化(我看到onload页面发生了什么?
  2. 我可以手动重新初始化mdl-layout,以便它可以重新构建抽屉按钮等吗?
  3. 有没有人知道为什么离线会导致任何渲染/ javascript问题?

我已经尝试window.componentHandler.upgradeAllRegistered()但不会重新初始化布局

d-_*_*_-b 1

以下是我解决问题的方法,以防其他人遇到此问题(带有角度的 mdl 竞争条件):

  1. 加载 header 指令后加载material.js 库
  2. 等待window.componentHandler
  3. 然后运行window.componentHandler.upgradeAllRegistered();

完整代码(放置在标头指令中)

function materialize(){
        var script = document.createElement('script');
        script.src = 'assets/js/material.js';
        document.body.appendChild(script);
        (function upgrade(){
            if (!window.componentHandler){
                return $timeout(upgrade, 200);
            }
            $timeout(window.componentHandler.upgradeAllRegistered);
        })();
}
Run Code Online (Sandbox Code Playgroud)