我正在尝试使用angular.injector
加载的其他模块的指令,但angular无法理解other_module
中的指令。
在我的主文件中,我声明了我的模块。
angular.module('blockApp', []).directive('', []);
在第二个文件中,我尝试将angularCharts添加为依赖项:
var otherBlock = angular.module('blockApp');
otherBlock.run(function() {
angular.injector(['ng', 'angularCharts']);
});
然后我使用angularCharts
的指令,但angularjs无法识别它们。
我知道我们应该在声明模块时添加依赖模块,但这是特殊情况。
答案 0 :(得分:1)
这里是一个plnkr http://plnkr.co/edit/Q5oD65wSvBAemf5BCDL7?p=preview
在这种情况下,您可以使用$ compile(您仍然需要示例中的$ scope,但$ compile几乎可以回答您的问题),
var $compile = chartsInjector.get("$compile");
console.log("$compile=",$compile);
var chartsDirective = $compile("<div charts></div>");
console.log(chartsDirective);
...
var blockapp = angular.module('blockApp', []);
blockapp.run(function(){
// create a new injector
var chartsInjector = angular.injector(['ng', 'angularCharts']);
console.log("chartsInjector=",chartsInjector);
var $compile = chartsInjector.get("$compile");
console.log("$compile=",$compile);
var chartsDirective = $compile("<div charts></div>");
console.log(chartsDirective);
})
注射器1)由ng-app
创建<body ng-app="blockApp">
注入器2)由angular.injector()
创建var chartsInjector = angular.injector(['ng', 'angularCharts']);
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
<script type="text/javascript">
// creating the angularcharts
angular.module('angularCharts', []).directive('charts', function(){
return function(){}
});
// creating blockapp
angular.module('blockApp', []).directive('', []);
// retrieving the created blockapp
// NOTE! ng-app will create a new injector for blockapp
var blockapp = angular.module('blockApp', []);
blockapp.run(function(){
// create a new injector
var chartsInjector = angular.injector(['ng', 'angularCharts']);
console.log("chartsInjector=",chartsInjector);
var $compile = chartsInjector.get("$compile");
console.log("$compile=",$compile);
var chartsDirective = $compile("<div charts></div>");
console.log(chartsDirective);
})
</script>
</head>
<body ng-app="blockApp">
</body>
</html>