【问题标题】:AngularJs console.log "$q is not defined"AngularJs console.log “$q 未定义”
【发布时间】:2014-04-18 06:04:06
【问题描述】:
【问题讨论】:
标签:
angularjs
breeze
promise
angular-promise
【解决方案1】:
Promise 不会被弃用。事实上,它们最近获得了相当大的动力,并包含在下一版本的 JavaScript 中。
让我们看看他们怎么说:
这个breeze.angular.q 库已被弃用。它被 Breeze Angular 服务所取代,后者更干净地为 Angular 开发配置了微风。
Breeze Angular 服务告诉 Breeze 使用 Angular 的 $q 进行承诺,并使用 Angular 的 $http 进行 ajax 调用。
他们说的是,Breeze 使用 Angular 自己的 Promise,而不是它自己的 breeze.angular.q,后者使用 Q Promise,它比 Angular 使用的 $q Promise 更强大但也更重。这只是一个 API 更改。
在 Angular 代码中,您可以使用依赖注入获得$q - 例如使用简单的语法:
myApp.controller("MyCtrl",function($q){
//$q is available here
});
或者,如果您想独立使用它,您可以使用服务位置并直接从注入器获取$q,但这种情况很少见。 (如果你想要一个例子 - 让我知道,我宁愿不包含通常表明不良做法的代码)。
【解决方案2】:
# in your console, try following code
$injector = angular.injector(['ng']);
q = $injector.get('$q');
deferred = q.defer();
# then do whatever you want