您好我正在开发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发送任何数据。我知道有没有更好的解决方案?任何帮助,将不胜感激。谢谢。
答案 0 :(得分:1)
我想这是一个代码折射问题。
问:我可以通过执行headers={ factory data }
这样的快捷方式来避免执行混乱的属性分配吗?
A:好的。我可能做了一个糟糕的工作,解释你的问题。我只是想让它更容易理解。
简短回答:是。您可以通过这样做进一步缩短代码。
var request = {
url: getsavedvechilceUrl,
method: 'GET',
headers: ScrollFunction.getheaders()
};
<强>为什么吗
您的函数getheaders()
已经返回了一个javascript对象,这正是request.headers
正在寻找的对象。一个对象{}。
由于getHeaders()
已经返回了一个对象,您只需将其直接插入request.headers
即可。也就是说,您无需重新创建对象并逐个重新分配属性。
希望这有帮助。