0

我在我的 Angular 应用程序中使用 RequireJS。require我想pill知道它实际使用的地方。

药丸.js

define([], function() {
    angular.module('app').directive('pill', function() {
        return function(a,b,c) {
            b.html("A pill");
        };
    });
});

包括.html

<div load-script="require(['pill']);"></div>
<div pill>test</div>

main.html

<html ng-app="app">
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.js"></script>
        <script src="http://requirejs.org/docs/release/2.1.10/comments/require.js"></script>
    </head>
    <body>
        <script>
            var app = angular.module("app", [])
                app.directive('loadScript', function() {
                        return {
                            link: function(scope, element, attrs) {
                                (new Function(attrs.loadScript))();
                            }
                        };
                    }
                );
        </script>
    <div ng-include="'incl.html'"></div>
    </body>
</html>

这个简短的例子应该声明一个pill指令,它只是将文本从文件转换testA pill内部incl.html文件。但是,它不起作用。我猜这是因为该pill指令是在incl.html编译后注册的。

我想避免在全局范围内声明指令,例如在内部main.html,因为它没有在那里使用。这个要求可以优雅地实现吗?

4

1 回答 1

0

directive按需加载的最佳方式是创建它$compileProvider,您需要在app.config阶段期间使用它来缓存它。另外,ng-include我建议您在directive使用它的部分视图加载时加载您需要的,而不是使用。

要做到这一点,它实际上是相当复杂的。我创建了以下库,可以帮助您入门:

http://marcoslin.github.io/angularAMD/

angularAMD 将使您更容易创建一个独立的文件,该文件允许您配置 RequireJS 依赖项以directive仅在需要它的部分上加载。

于 2014-01-13T19:45:39.443 回答