web-dev-qa-db-ja.com

AngularJs console.log "$ qが定義されていません"

コンソールでこのエラーが発生します$q is not defined。調査したところ、.q library has been deprecated from http://www.breezejs.com/documentation/breeze-labs/breezeangularqjs

もしそうなら、約束の概念全体も廃止されます、

11
RONE

Promiseは非推奨ではありません。実際、それらは最近かなりの勢いを得ており、JavaScriptの次のバージョンに含まれています。

彼らが言うことを見てみましょう:

このbreeze.angular.qライブラリは廃止されました。これは、Breeze Angularサービスに置き換えられました。これは、Angular開発のためにbreezeをよりきれいに構成するサービスです。

Breeze Angularサービスは、Breezeに、Angularの$qをプロミスに使用し、Angularの$httpをajax呼び出しに使用するように指示します。

彼らが言うことは、そよ風はそれ自身のbreeze.angular.qではなくAngular自身のプロミスを使用するということです。これは$qプロミスよりも可能であるがはるかに重いQプロミスを使用するAngular =使用。これは単にAPIの変更です。

Angularコード内で、依存関係注入を使用して$qを取得できます-たとえば、簡単な構文で:

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

または、個別に使用したい場合は、サービスの場所を使用して、インジェクターから直接$qを取得できますが、これはまれなケースです。 (例が必要な場合-知らせてください。通常、悪い習慣を示すコードは含めないでください)。

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