2014-03-13 13 views
11

Ich erhalte diesen Fehler in der Konsole $q is not defined. Als ich einige der Forschung habe ich einige Sache wie .q library has been deprecated von http://www.breezejs.com/documentation/breeze-labs/breezeangularqjs

gefunden Wenn dies so ist, dann wird das gesamte Konzept der Versprechungen auch veraltet,

+2

Haben Sie $ q in den Bereich injiziert, in dem Sie arbeiten? – Benmj

+0

Bitte denken Sie daran, uns über den Fortschritt zu informieren und geben Sie mir Feedback auf die Antwort :) –

Antwort

25

Versprechen werden nicht mehr unterstützt. In der Tat gewinnen sie in letzter Zeit eine Menge an Dynamik und sind in der nächsten Version von JavaScript enthalten.

Schauen wir uns an, was sie sagen:

Diese breeze.angular.q Bibliothek ist veraltet. Es wird durch den Breeze Angular Service ersetzt, der Wind für die Winkelentwicklung sauberer konfiguriert.

Der Breeze Angular Service sagt Breeze, Angulars $q für Versprechungen zu verwenden und Angulars $http für Ajaxaufrufe zu verwenden.

Was sie sagen, ist, dass Brise verwendet Angular eigenen Versprechungen für Versprechungen, anstatt eigene breeze.angular.q die Q Versprechungen verwendet, die mehr in der Lage sind, sondern auch viel schwerer als $q Versprechungen, die Angular Anwendungen. Dies ist einfach eine API-Änderung.

Innerhalb Angular-Code können Sie $q mit Dependency Injection erhalten - zum Beispiel mit der einfachen Syntax:

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

Alternativ, wenn Sie es verwenden möchten, unabhängig können Sie Service-Standort verwenden und erhalten $q direkt von einem Injektor, aber das ist selten der Fall. (Wenn Sie ein Beispiel haben möchten - lassen Sie es mich wissen, ich würde lieber keinen Code hinzufügen, der normalerweise auf schlechte Praktiken hinweist).

+0

Hey, danke, zuerst möchte ich zustimmen, dass ich über Winkelkonzepte nicht so vertraut bin, also beim Durchsuchen der Versprechen Dokumente, fand ich http: //www.techjini.com/blog/javascript-promises/, Ist diese Dokumentation korrekt, wenn mich nicht korrigieren. Vielen Dank Bruder –

+0

@RaviMone Wenn Sie ein kurzes Beispiel auf jsfiddle (http://jsfiddle.com) oder eine andere solche Website erstellen, kann ich einen Blick darauf werfen und versuchen zu verstehen, was Sie falsch machen. –

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