如何从工厂获取数据并将其发送到标题中?

时间:2017-07-27 04:30:33

标签: javascript angularjs

您好我正在开发angularjs中的Web应用程序。我正在进行大量的http调用以与web api进行交互。因此,我也必须在标头中发送大量数据。我已经为get数据创建了工厂,如下所示。这些数据应该在标题中传递。以下是我的工厂。

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调用中扩展它。我尝试过标题:{headersdata},但这不是向api发送任何数据。我知道有没有更好的解决方案?任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

我想这是一个代码折射问题。

问:我可以通过执行headers={ factory data }这样的快捷方式来避免执行混乱的属性分配吗?

A:好的。我可能做了一个糟糕的工作,解释你的问题。我只是想让它更容易理解。

简短回答:是。您可以通过这样做进一步缩短代码。

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

<强>为什么吗

您的函数getheaders()已经返回了一个javascript对象,这正是request.headers正在寻找的对象。一个对象{}。

由于getHeaders()已经返回了一个对象,您只需将其直接插入request.headers即可。也就是说,您无需重新创建对象并逐个重新分配属性。

希望这有帮助。