13
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $http, $filter) {

上記は、使用しようとしているコードの例で$http.getあり$filtercontroller.

唯一の問題は、そのように使用すると、コンソール ログにエラーがスローされること$filter is not a functionです。

app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {

それらを交換すると、エラーがスローされます$http is undefined

4

3 に答える 3

25

ご利用の際は

app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {

variable$filterは実際には のインスタンスであり$http、の$httpインスタンスです$filterfunction(...)実際には、 paramsに何が書かれているかは問題ではありません。

ここで重要なのは、使用する注射剤の順序です。たとえば、

app.controller('myController', ['$scope', '$http', '$filter', function(a, b, c) {

インスタンスにマップされます:

  • a -> スコープ
  • b -> $http
  • c -> $filter

angularドキュメントから:

Angular は引数の名前からコントローラーのコンストラクター関数へのコントローラーの依存関係を推測するため、PhoneListCtrl コントローラーの JavaScript コードを縮小すると、その関数の引数もすべて縮小され、依存関係インジェクターは識別できなくなります。正しくサービスします。

したがって、yout コントローラーに配列表記を使用することで、コードが縮小された後にコードが機能することを確認できます。

于 2014-06-18T11:56:26.650 に答える