我可以在Angular组件之外使用AngularJS的$ q吗?

时间:2014-09-15 23:09:52

标签: javascript angularjs requirejs angular-promise

我正在编写一个浏览器应用程序,我有一个创建对象并初始化它的文件。该应用程序是用AngularJS编写的,但有问题的文件是Angular生态系统之外的纯Javascript。

我想在该文件中使用promises,但由于Angular包含an implementation Q,我宁愿使用它而不是引入另一个库。

我也在使用RequireJS。

那么,有没有办法在非Angular文件中使用$ q?

1 个答案:

答案 0 :(得分:9)

您可以使用angular.injector()方法执行此操作,该方法返回$injector函数,该函数可以通过其注入所需的依赖项(例如$http$qinvoke()方法。

<强> DEMO

这样的事情:

angular.injector(['ng']).invoke(['$q', function($q) {

  $q.when('hello world').then(function(message) {
    window.alert(message);
  });

}]);

请注意,传递给angular.injector()的数组是一个模块列表,我包含了ng模块,因为这是AngularJS核心依赖项所在的位置。