2016-03-21 22 views
0

下記のparams:listで以下のパラメータを取得するにはどうすればよいですか。私は

TypeError: Cannot read property 'search' of undefined 
    at Object.async (abcd.html?kId=pqr) 

URL、以下のエラーを取得しています:

http://localhost:8080/.........../abcd.html?kId=pqr 

コード:

var app = angular.module('angModule', [], function($locationProvider) { 
    $locationProvider.html5Mode(true); 
}); 
app.factory(
    'myService', 
    function($http,$location) { 
     return { 
      async : function() { 
       return $http 
        .get('http://localhost:8080/...........,,,,./...',{params:{"kId": $location.search()['kId'] }}); 
       } 
      }; 
     }); 
+0

共有コードに '$ location.search()'が表示されません。 –

答えて

1

私は$locationが定義されていない理由です、あなたは正しくサービスを定義していないと思います。あなたは表記を使用する必要があります。

batchModule.factory('myService', ['$interval', '$log', function($interval, $log) { 

https://docs.angularjs.org/guide/servicesに「依存関係」を参照してください。あなたの場合:

app.factory('myService', ['$http', '$location', function($http, $location) { 
    // ... 
}]); 
+0

実際に彼は記法を使う必要はありません。それは生産拡大問題を解決するはずです。私たちが知っている限り、彼はビルド時にそれを行うためのタスクを使用しています。 –

+0

あなたのコードを小さくする場合にのみ表記が必要です。 Angularは名前付きパラメータ(注入可能なものだけのコントローラ、サービスなど)を提供し、注入の仕方を示します。しかし、コードを小さくすると、すべての関数の引数の名前が変更され、依存関係がすべて破棄されます。配列は本質的にそれらをエイリアスにすることができます。 – ste2425

関連する問題