私は Angular を初めて使用し、$http url プレースホルダーが実際のデータに置き換えられないという問題を抱えています。私が欲しいのはこれのためです:
"/json/:searchType/:userId"
$http 呼び出しを使用するときにこれに置き換えるには:
"/json/user/123"
代わりに、firebug の [Net] タブによると、次のような結果が得られます。
"/json/:searchType/:userId?userId=123&searchType=user"
フィドルを作成しようとしましたが、サーバーからさまざまなビューと json データを使用しているため、実際に行っているように見えるフィドルで機能するものを作成する方法がわかりません。いくつか例を挙げると、この回答、この回答、この回答、この回答、およびこの回答を見てきました。$resource、または URL パラメータをオブジェクト パラメータにリンクするために使用する @ 表記に関するものではない投稿を見つけるのに苦労しています。
説明するために、私はサービスを使用して、コントローラとファクトリの間でパラメータとパラメータを渡しています。これは実際に $http リクエストを実行しますsearchType
。accountId
これが私のコントローラーです:
.controller('UserDetailsCtrl', ["$scope", "Search", function ($scope, Search) {
$scope.result = Search.getUser();
}])
ここに私の工場があります:
.factory('Search', ["$http", "SearchCriteriaSvc", function($http, SearchCriteriaSvc) {
var baseUrl = "/json/:searchType/:accountId";
return {
getUser: function () {
return $http.get(baseUrl,
{params:
{
accountId: SearchCriteriaSvc.getAccountId(),
searchType: SearchCriteriaSvc.getSearchType()
}
})
.then(function(result) {
return result.data;
});
}
}
}])
最後に、私のサービス:
.service('SearchCriteriaSvc', function() {
var searchType = "",
userId = "";
return {
getSearchType: function () {
return searchType;
},
setSearchType: function(value) {
searchType = value;
},
getUserId: function () {
return userId;
},
setUserId: function(value) {
userId= value;
}
};
})
サービスを使用してパラメーターを渡さないようにしましたが(文字列を手動で入力するだけです)、同じ結果が得られたので、サービスが問題だとは思いませんが、途方に暮れています。
どんな助けでも素晴らしいでしょう。ありがとう!