从我的AngularJS注入器获取延迟/承诺时获取“未知提供者:$ qProvider< - $ q”

时间:2013-05-03 12:06:13

标签: angularjs promise

我正在尝试创建一个简单的示例,我从AngularJS的服务解决方案中获取promise / defer对象:

var $q;

function init() {

    var $injector = window.angular.injector();
    console.log($injector);
    $injector.invoke(["$q", function (_$q) {
        console.log($q);
        $q = _$q;
    }]);

}

init();

但结果是:

  

错误:未知提供商:$ qProvider< - $ q   [打破此错误]
  throw Error(“未知提供者:”+ path.join('< - '));

我可以错过什么?

2 个答案:

答案 0 :(得分:12)

您必须添加提供商所在的模块,如下所示:

var $injector = window.angular.injector(['ng']);

然后它会起作用!

编辑:关于'ng'模块,文档明确指出必须明确添加。 From the angular injector docs

modules – {Array.<string|Function>} – A list of module functions or their aliases.
See angular.module. The ng module must be explicitly added.

答案 1 :(得分:0)

如果你在angular.js模块的生命周期之外,请使用https://github.com/kriskowal/q,我走这条路并且它不能很好地工作,$ q并不意味着在bootstraped模块之外使用(需要a $ rootScope)。