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

标签 javascript angularjs

您好,我正在使用 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();是否可以传递类似 headers: { headersdata } 的内容,因为我可以在工厂中添加标题。无需在每个 http 调用中扩展它。我试过 headers: { headersdata } 但这没有向 api 发送任何数据。我可以知道有更好的解决方案吗?任何帮助,将不胜感激。谢谢。

最佳答案

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

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

答:好的。我可能在解释你的问题时做得不好。我只是想让它更容易理解。

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

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

为什么?

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

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

希望这对您有所帮助。

关于javascript - 如何从工厂获取数据并将其发送到标题中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45341458/

相关文章:

javascript - 为什么在添加常量或固定按钮时标题会下降。?

javascript - 如何制作一个从底部平滑扩展到视口(viewport) 85% 的 div?

javascript - 在几乎空的页面上出现 JavaScript 错误

javascript - CSS、Javascript 和 HTML 的集成

javascript - Bing Maps V8 - Uncaught ReferenceError : Microsoft is not defined

javascript - AngularJS 未捕获引用错误 : response is not defined

javascript - AngularJS 单选按钮未绑定(bind)到模型

javascript - 定义和调用自定义 javascript 函数的语法

javascript - jQuery 显示/隐藏 div 无法正常工作

javascript - 循环之前等待内部代码完成