Javascript 模板上的Require指令
我在Angular应用程序中使用RequireJS。我想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。但是
要求我的药丸在实际使用的地方
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>