AngularJs console.log" $ q未定义"

时间:2014-03-13 13:11:08

标签: angularjs breeze promise angular-promise

我在控制台$q is not defined中收到此错误。当我做一些研究时,我发现了一些像.q library has been deprecated这样的东西 http://www.breezejs.com/documentation/breeze-labs/breezeangularqjs

如果是这样,那么承诺的整个概念也被弃用了,

2 个答案:

答案 0 :(得分:25)

不推荐使用Promise。事实上,他们最近获得了相当大的动力,并被包含在下一版本的JavaScript中。

让我们看看他们说的话:

  

此breeze.angular.q库已被弃用。它被Breeze Angular Service所取代,它更加干净地为Angular开发提供了微风。

     

Breeze Angular Service告诉Breeze使用Angular的$q作为承诺,并使用Angular的$http进行ajax调用。

他们所说的是微风使用Angular自己的承诺承诺,而不是使用自己的breeze.angular.q,它使用的Q承诺比Angular使用的$q承诺更有能力但也更重。 。这只是一个API更改。

在Angular代码中,您可以使用依赖注入获取$q - 例如使用简单的语法:

myApp.controller("MyCtrl",function($q){
    //$q is available here
});

或者,如果您想独立使用它,您可以使用服务地点并直接从注射器获取$q,但这种情况很少见。 (如果你想要一个例子 - 让我知道,我只是不要包含那些通常表明不良做法的代码。)

答案 1 :(得分:9)

# in your console, try following code
$injector = angular.injector(['ng']);
q = $injector.get('$q');
deferred = q.defer();
# then do whatever you want