AngularJS依赖项:未在模块中加载的常量/控制器等

时间:2014-11-19 15:19:16

标签: javascript angularjs dependency-injection

我偶然发现this question here找不到明确定义的工厂的原因。然后我想知道角度模块中定义的术语"

如果我有这样的服务:

angular.module('d3', ['underscore'])
       .factory('d3', ['$window', 'underscore',
       function($window, _) {
           if (!_.isObject($window.d3)) {
               throw "services.d3: moment library missing!";
           } else {
               return $window.d3;
          }
       }
   ]);

当我尝试在这样的模块中加载此服务时:

angular.module("widgets.D3Widget", ['underscore'])

.controller("widgets.D3Widget.D3WidgetCtrl", [
    "$scope",
    "d3",
    function(
        $scope,
        d3
    ) {
        console.log(d3.select('body'));
        //work goes here
    }
]);

未加载服务。我宁愿得到一个Angular错误,如:"错误:[$ injector:unpr]未知提供者:d3Provider< - d3

我已经阅读了有关DI的Angular文档,但这并没有多大帮助。

那么定义服务意味着什么?'?编写模块d3似乎还不够,我需要在第二个模块中添加它,如angular.module("widgets.D3Widget", ['underscore', 'd3']),而不仅仅是在模块的一个组件中(控制器,指令,等等)。是吗?

1 个答案:

答案 0 :(得分:0)

抱歉,无法发表评论。你需要添加' d3'配置模块小部件时的依赖关系.D3Widget,就像这样

angular.module("widgets.D3Widget", ['d3'])

这是因为' d3'与您的小部件.D3Widget'不在同一模块下。