2017-07-27 41 views
1

嗨,我正在angularjs中開發web應用程序。我正在做很多http調用來與web api進行交互。因此我必須在標題中發送大量數據。我已經創建了工廠來獲取數據如下。這些數據應該在頭文件中傳遞。下面是我的工廠。如何從工廠獲取數據並將其發送到標題中?

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) { 
       }) 
      } 

我想在標題是我已經有數據在var headersdata = ScrollFunction.getheaders();是否有可能傳遞類似標題的內容:{headersdata},因爲我可以在工廠中添加標題。不需要在每個http調用中擴展它。我嘗試了header:{headersdata},但是這不會將任何數據發送到api。我可以知道有沒有更好的解決方案?任何幫助,將不勝感激。謝謝。

+0

我想你在那裏有一個工作解決方案,你只是在尋找折射器代碼的建議? –

+0

這是工作解決方案。我想要一些var headers = {工廠數據}。現在我正在分配每個屬性,如RequestedPlatform:headersdata.RequestedPlatform。 –

回答

1

我想這是一個代碼重構問題。

問:我可以通過做一些快捷方式如headers={ factory data }來避免做混亂的屬性分配嗎?

- 答:好的。我可能做了一個糟糕的工作,解釋了你的問題。我只是想讓它更容易理解。

簡短回答:是的。這樣做可以進一步縮短代碼。

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

爲什麼?

您的功能getheaders()已經在返回一個JavaScript對象,這正是request.headers正在查找的對象。一個東西 {}。

由於getHeaders()已經返回一個對象,您可以直接將其插入request.headers。也就是說,你不需要重新創建一個對象,並重新分配一個接一個的屬性。

希望這會有所幫助。

+0

是的,這是我需要的。我的措辭不好。 –

相關問題