我偶然发现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'])
,而不仅仅是在模块的一个组件中(控制器,指令,等等)。是吗?
答案 0 :(得分:0)
抱歉,无法发表评论。你需要添加' d3'配置模块小部件时的依赖关系.D3Widget,就像这样
angular.module("widgets.D3Widget", ['d3'])
这是因为' d3'与您的小部件.D3Widget'不在同一模块下。