2017-07-27 11 views
1

こんにちは私はangularjsでWebアプリケーションを開発しています。私はWeb APIと対話するために多くのHTTP呼び出しを行っています。その結果、私はヘッダーにも多くのデータを送る必要があります。以下のようにデータを取得するためのファクトリを作成しました。これらのデータはヘッダーで渡す必要があります。以下は私の工場です。工場からデータを取得してヘッダーで送信するにはどうすればいいですか?

var myapp = angular.module('RoslpApp'); 

    myapp.factory("ScrollFunction", ['$location', '$anchorScroll', '$cookieStore', function ($location, $anchorScroll, $cookieStore) { 
     return { 
      getheaders: function() { 
       var cookiePreferredLanguage = $cookieStore.get('PreferredLanguage'); 
       var headers={ 
        Logintoken: $cookieStore.get('LoginToken'), 
        LoginId: $cookieStore.get('LoginID'), 
        RequestedPlatform: "Web", 
        RequestedLanguage: cookiePreferredLanguage 
       }; 
       return headers; 
      } 
     } 
    } 

     ]); 
    Below is my sample http call. 

    function getpermissiondetails() { 
       var headersdata = ScrollFunction.getheaders(); 
       $scope.Create = "Create"; 
       var getsavedvechilceUrl = baseurl + "api/RolesPermission/getgroups"; 
       var request = { 
        url: getsavedvechilceUrl, 
        method: 'GET', 
        headers: { 
         RequestedPlatform: headersdata.RequestedPlatform, 
         RequestedLanguage: headersdata.RequestedLanguage, 
         Logintoken: headersdata.LoginToken, 
         LoginId: headersdata.LoginID 
        } 
       }; 
       $http(request).then(function (response) { 
        $scope.groups = response.data.data; 
       }, function (error) { 
       }) 
      } 

私はすでにヘッダにデータがありますか?headersdata = ScrollFunction.getheaders(); {headersdata}というヘッダーのようなものを渡すことは可能ですか?私は工場でヘッダーを追加できます。各http呼び出しで展開する必要はありません。私はヘッダーを試しました:{headersdata}しかし、これはapiにデータを送信していません。もっと良い解決策があるのは分かりますか?どんな助けもありがとう。ありがとうございました。

+0

私は、あなたがそこで起きたことは、実用的な解決策があり、あなたのコードを屈折させるための助言を探していると思いますか? –

+0

それは解決策です。私は何かが必要なvarヘッダー= {工場データ}。今、私はRequestedPlatform:headersdata.RequestedPlatformのような各プロパティを割り当てています。 –

答えて

1

これはコード屈折の問題だと思います。

Q:headers={ factory data }のようなショートカットを実行することで、面倒なプロパティの割り当てを回避できますか?

A:私はたぶんあなたの質問を言い表わすと悪い仕事をしました。私はそれをもっと分かりやすくしようとしています。

短い回答:はい。これを行うことでコードをさらに短縮することができます。

var request = { 
    url: getsavedvechilceUrl, 
    method: 'GET', 
    headers: ScrollFunction.getheaders() 
}; 

なぜですか?

あなたの関数getheaders()は、すでにrequest.headersが探しているjavascriptオブジェクトを返しています。オブジェクト{}。

getHeaders()は既にオブジェクトを返すので、request.headersに直接接続することができます。つまり、オブジェクトを再作成してプロパティを1つずつ戻す必要はありません。

これが役に立ちます。

+0

はい、これは私が必要なものです。私は言い訳の質問に悪いです。 –

関連する問題