Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模板上的Require指令_Javascript_Angularjs_Requirejs_Angularjs Directive_Angularjs Ng Include - Fatal编程技术网

Javascript 模板上的Require指令

Javascript 模板上的Require指令,javascript,angularjs,requirejs,angularjs-directive,angularjs-ng-include,Javascript,Angularjs,Requirejs,Angularjs Directive,Angularjs Ng Include,我在Angular应用程序中使用RequireJS。我想要求我的药丸在实际使用的地方 pill.js 包括html 测试 main.html var app=angular.module(“app”,[]) app.directive('loadScript',function(){ 返回{ 链接:函数(范围、元素、属性){ (新函数(attrs.loadScript))(); } }; } ); 这个简短的示例应该声明一个pill指令,该指令只将test文件中的文本转换为pill。但是

我在Angular应用程序中使用RequireJS。我想
要求
我的
药丸
在实际使用的地方

pill.js

包括html


测试
main.html


var app=angular.module(“app”,[])
app.directive('loadScript',function(){
返回{
链接:函数(范围、元素、属性){
(新函数(attrs.loadScript))();
}
};
}
);
这个简短的示例应该声明一个
pill
指令,该指令只将
test
文件中的文本转换为
pill
。但是,它不起作用。我猜这是因为编译
incl.html
之后注册了
pill
指令


我希望避免在
main.html
中声明指令somaly globaly,因为在那里没有使用它。这一要求是否可以优雅地实现?

按需加载指令的最佳方法是使用
$compileProvider
创建指令,在
app.config
阶段需要缓存该指令。另外,我建议您在加载使用它的局部视图时加载所需的
指令
,而不是使用
ng include

要做到这一点,实际上相当复杂。我创建了以下库,可以帮助您开始:

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

define([], function() {
    angular.module('app').directive('pill', function() {
        return function(a,b,c) {
            b.html("A pill");
        };
    });
});
<div load-script="require(['pill']);"></div>
<div pill>test</div>
<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>