为什么在DDO工厂函数中添加参数会破坏应用程序?

时间:2014-10-28 11:19:27

标签: javascript angularjs parameters

我的印象(正确地说,我的谷歌搜索显示)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 documentationinjectables中找到的参数。为什么这会给我带来像

这样的错误
Error: [$injector:unpr] http://errors.angularjs.org/1.2.15/$injector/unpr?p0=injectablesProvider%20%3C-%20injectables%20%3C-%20ayeDirective

有人可以解释一下吗?

1 个答案:

答案 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;所以它会进入依赖解析器找到它然后作为参数传递给你的指令。