我的印象(正确地说,我的谷歌搜索显示)Javascript函数可以接受任何数量的参数,无论其目的是什么。
所以我的指令在这里工作很奇怪
...
module.directive('aye', function(){
return {
restrict: 'AE',
replace: 'true',
template: "<p> Hi </p>"
};
});
</script>
</head>
<body ng-controller="myController">
<div>
{{ airportsArray() }}
</div>
<div aye></div>
</body>
</html>
但不是在这里
module.directive('aye', function(injectables){
return {
restrict: 'AE',
replace: 'true',
template: "<p> Hi </p>"
};
});
</script>
</head>
<body ng-controller="myController">
<div>
{{ airportsArray() }}
</div>
<div aye></div>
</body>
</html>
我只是删除参数(我在Angular's very own documentation)injectables
中找到的参数。为什么这会给我带来像
Error: [$injector:unpr] http://errors.angularjs.org/1.2.15/$injector/unpr?p0=injectablesProvider%20%3C-%20injectables%20%3C-%20ayeDirective
有人可以解释一下吗?
答案 0 :(得分:0)
Angular通过依赖注入传递这些值。并根据参数的名称确定要注入的内容(当你进入缩小时可能会更复杂)。在上面的示例中,您没有使用名称&#34;注射剂&#34;来识别组件(服务/工厂/值/等)。所以它向你显示的错误是它找不到&#34;注射剂&#34;
//Create something that can be injected:
module.service('fooService', function($http){
/* ... some functions here ... */
});
//Inject this defined piece into your directive:
module.directive('myDirective', function(fooService){
});
当angular需要创建&#34; myDirective&#34;的实例时它会看到它需要参数&#34; fooService&#34;所以它会进入依赖解析器找到它然后作为参数传递给你的指令。