AngularJs console.log "$ q не определен"

Я получаю эту ошибку в консоли $q is not defined. Когда я провел некоторое исследование, я нашел нечто вроде .q library has been deprecated от http://www.breezejs.com/documentation/breeze-labs/breezeangularqjs

Если это так, то вся концепция promises также устарела,

Ответ 1

Promises не устарели. Фактически, они в последнее время набирают довольно много импульса и включены в следующую версию JavaScript.

Посмотрите, что они говорят:

Эта библиотека breeze.angular.q устарела. Он заменяется услугой Breeze Angular, которая более точно настраивает бриз для разработки Angular.

Служба Breeze Angular сообщает Breeze использовать Angular $q для promises и использовать Angular $http для вызовов ajax.

Что они говорят, что ветер использует Angular собственный promises для promises, а не его собственный breeze.angular.q, который использует Q promises, которые более способны, но также намного тяжелее, чем $q promises, которые Angular. Это просто изменение 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