我正在编写一个浏览器应用程序,我有一个创建对象并初始化它的文件。该应用程序是用AngularJS编写的,但有问题的文件是Angular生态系统之外的纯Javascript。
我想在该文件中使用promises,但由于Angular包含an implementation Q,我宁愿使用它而不是引入另一个库。
我也在使用RequireJS。
那么,有没有办法在非Angular文件中使用$ q?
答案 0 :(得分:9)
您可以使用angular.injector()方法执行此操作,该方法返回$injector函数,该函数可以通过其注入所需的依赖项(例如$http
,$q
) invoke()
方法。
<强> DEMO 强>
这样的事情:
angular.injector(['ng']).invoke(['$q', function($q) {
$q.when('hello world').then(function(message) {
window.alert(message);
});
}]);
请注意,传递给angular.injector()
的数组是一个模块列表,我包含了ng
模块,因为这是AngularJS核心依赖项所在的位置。