ocLazyload不加载新模块

时间:2015-04-20 19:29:50

标签: javascript angularjs module

我想用ocLazyload动态地将模块包含到我的app模块中。我的代码是

 angular.module("one",["oc.lazyLoad"])
    .config(function ($ocLazyLoadProvider) {
        $ocLazyLoadProvider.config({
        modules: [
            {
                name: 'directive',
                files: ['loaded.js']
            }
        ],
            debug: true
    })
})
    .run(function ($ocLazyLoad) { $ocLazyLoad.load('directive')});

angular.module("one").controller("first", function ($scope, $ocLazyLoad) {
});

loaded.js

   angular.module("directive", []).directive("blank", function() {
    return {
        restrict: "E",
        template: "<h1>Test</h1>"
    }
});

的index.html

<body ng-app="one">
<div ng-controller="first">
    FOO
    <blank></blank>
</div>
</body>

所以我可以看到loaded.js已成功加载。然而,模块&#34;指令&#34;不包含在&#34; app&#34;的依赖关系中模块就是指令&#34;空白&#34;没有呈现。我如何使ocLazyload包含新加载的模块&#34;指令&#34;进入我的主模块。这是否受支持。我见过的大多数示例都在加载的文件中使用了现有模块。

1 个答案:

答案 0 :(得分:2)

常见问题解答中的这个问题可能就是您所寻找的: https://oclazyload.readme.io/v1.0/docs/faq

  

我懒惰地加载了一个指令,但我的页面上没有任何改变

如果在延迟加载其定义之前指令在DOM中,则需要告诉Angular它应该解析DOM以重新编译新指令。要做到这一点,你需要使用$ compile:

$ocLazyLoad.load('directive').then(function() {
  $compile(angular.element('body'))($scope);
});

您也可以使用ocLazyLoad指令,它主要是针对这种情况编写的。