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

Fro*_*cho 6 javascript requirejs angularjs angular-promise

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

我想在文件中使用的承诺,但由于角包含一个实现Q,我宁愿只使用比其他图书馆带来的.

我也在使用RequireJS.

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

rye*_*lar 9

您可以通过做这个angular.injector()返回一个方法$注射器可以与你需要的依赖关系(如注入功能$http,$q)通过它的invoke()方法.

DEMO

像这样的东西:

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

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

}]);
Run Code Online (Sandbox Code Playgroud)

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