您好,我正在使用 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/