我正在尝试创建一个简单的示例,我从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();
但它导致:
Error: Unknown provider: $qProvider <- $q
[Break On This Error]
throw Error(“Unknown provider: ” + path.join(‘ <- ‘));
我能错过什么?
解决方法
您必须添加提供程序所在的模块,如下所示:
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.