2

この URL https://github.com/angular/angular-seed/blob/master/app/js/app.jsから、以下のようなコントローラーを取得しました。

function WineListCtrl(Wine) {
    this.wines = Wine.query();
}

これまでのところ、Angular で行ってきたことは、$scope が注入されたコントローラーを定義することです。だから私は、上記のコントローラをに変更してみました

function WineListCtrl(Wine, $scope) {
    console.log($scope, this)
    this.wines = Wine.query();
}

しかし、これはエラー Error: Unknown provider for '$scope'.

ここで 3 つの質問があります。

  1. $scopeコントローラーの が注入されない理由。
  2. thisを意味WineListCtrl$scopeます。
  3. Angular のエラーのほとんどは、「XXXX の不明なプロバイダー」という形式です。firebug がそう言っている場合、何を探すべきですか?
4

2 に答える 2

1
  1. その形式でコントローラーを作成するときは、次のような依存関係をコントローラーに挿入する必要があります。

    function WineListCtrl(Wine, $scope) { console.log($scope, this) this.wines = Wine.query(); } WineListCtrl.$inject = ['Wine', '$scope'];

  2. thisと同じではありません$scope。$ scopeは、で作成された角度固有のオブジェクトです。$rootScope.$new()

  3. #1を参照

于 2013-02-27T22:12:19.083 に答える
1
  1. JavaScript を縮小または難読化しない限り、正常に動作するはずの「推測された依存関係」( DI ページを参照) を使用しています。

  2. この質問に対する私の回答を参照してください: 'this' vs $scope in AngularJS controllers

  3. 「不明なプロバイダー」エラーは通常、ng-appどこかで使用するのを忘れた場合、または適切なモジュールでアプリを初期化するのを忘れた場合に発生します。

于 2013-02-27T23:28:11.700 に答える