Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从工厂获取数据并以标题形式发送?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何从工厂获取数据并以标题形式发送?

Javascript 如何从工厂获取数据并以标题形式发送?,javascript,angularjs,Javascript,Angularjs,嗨,我正在用angularjs开发web应用程序。我做了很多http调用来与web api交互。因此,我必须发送大量的数据在标题太多。我已经创建了用于获取数据的工厂,如下所示。这些数据应该在标题中传递。下面是我的工厂 var myapp = angular.module('RoslpApp'); myapp.factory("ScrollFunction", ['$location', '$anchorScroll', '$cookieStore', function ($locati

嗨,我正在用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) {
                })
            }

我想在header中看到的是,我已经在var headersdata=ScrollFunction.getheaders()中有了数据;是否可以传递类似头的内容:{headersdata},因为我可以在工厂中创建添加头。无需在每次http调用中扩展它。我尝试了标题:{headersdata},但这并没有向api发送任何数据。我能知道有没有更好的解决办法?任何帮助都将不胜感激。多谢各位

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

Q:我是否可以通过执行类似
headers={factory data}
这样的快捷方式来避免混乱的属性分配

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

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

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

函数
getheaders()
已经返回了一个javascript对象,它正是
请求的对象。headers
正在查找的对象。对象{}

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


希望这能有所帮助。

我想你得到的是一个有效的解决方案,你只是在寻找建议来折射你的代码?这就是有效的解决方案。我想要一些var headers={factory data}。现在我分配每个属性,如RequestedPlatform:headersdata.RequestedPlatform.Yes,这就是我需要的。我的问题措辞不好。