2

私は Angular を初めて使用し、$http url プレースホルダーが実際のデータに置き換えられないという問題を抱えています。私が欲しいのはこれのためです:

"/json/:searchType/:userId"

$http 呼び出しを使用するときにこれに置き換えるには:

"/json/user/123"

代わりに、firebug の [Net] タブによると、次のような結果が得られます。

"/json/:searchType/:userId?userId=123&searchType=user"

フィドルを作成しようとしましたが、サーバーからさまざまなビューと json データを使用しているため、実際に行っているように見えるフィドルで機能するものを作成する方法がわかりません。いくつか例を挙げると、この回答この回答この回答この回答、およびこの回答を見てきました。$resource、または URL パラメータをオブジェクト パラメータにリンクするために使用する @ 表記に関するものではない投稿を見つけるのに苦労しています。

説明するために、私はサービスを使用して、コントローラとファクトリの間でパラメータとパラメータを渡しています。これは実際に $http リクエストを実行しますsearchTypeaccountId

これが私のコントローラーです:

.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;
        }
    };
  })

サービスを使用してパラメーターを渡さないようにしましたが(文字列を手動で入力するだけです)、同じ結果が得られたので、サービスが問題だとは思いませんが、途方に暮れています。

どんな助けでも素晴らしいでしょう。ありがとう!

4

1 に答える 1

4

$http はそのようには機能しません。パラメータを自分で URL に照合する必要があります。おそらく、HTTP リクエスト URL とそのパラメトリック コンポーネントを事前定義できる $resource や、同様のパラメトリック URL 機能をバックエンドではなく角度のあるフロント エンドのコンテキスト内で使用できる $route を考えているでしょう。渡す方法で渡されたすべてのパラメーターは、最終的にクエリ/GET スタイルのパラメーターになります。

http://docs.angularjs.org/api/ng.$http

params – {Object.<string|Object>} – Map of strings or objects which will be turned to ?key1=value1&key2=value2 after the url. If the value is not a string, it will be JSONified.
于 2013-08-09T14:56:43.407 に答える