我从API中提取数组,如下所示:
// in Service....
return $http.get(
'http://api.com/team/16110?Authorization=565eaa22251f932b9f000001d50aaf0b55c7477c5ffcdbaf113ebbda'
)
.success(function(data) {
return data;
})
.error(function(err) {
return err;
});
这样可以正常工作,但仅适用于URL调用的一个数据数组。我希望能够通过调整URL的一部分来调用其他特定数组 - 16110
。
我希望能够在此$ http调用中的其他位置使用其他属性的属性。我试过这个:
'http://api.com/team/' + $scope.thisId +'?Authorization=565eaa22251f932b9f000001d50aaf0b55c7477c5ffcdbaf113ebbda'
但这只是打破了服务。
对此有一个相对简单的解决方案吗?我觉得我非常接近,但不能破解它。
app.factory('DataService', ['$http', function($http) {
return {
getTeamDetailsById: function(teamId) {
return $http.get('http://api.com/team/' + teamId + '?Authorization=xxxxxx'
)
}
}]);
app.controller('NationsController', [
'$scope',
'DataService',
NationsController]);
function NationsController($scope, DataService) {
self = this;
DataService.getTeamDetailsById($scope.whichTeam).then(
function(response) {
//success callback
$scope.teamDetails = response.data;
},
function(response) {
//an error has occurred
});
}
我期待从此获得一个对象。 API网址很好,我直接尝试了它,它返回数据确定。
答案 0 :(得分:3)
将id
从范围传递到服务中:
app.factory("DataService", ["$http", function($http) {
return {
getTeamDetailsById: function(teamId) {
return $http.get('path/to/api' + teamId + '?Auth=xxxx')
}
};
}]);
从控制器调用它:
DataService.getTeamDetailsById($scope.teamId).then(function(response) {
//success callback
$scope.teamDetails = response.data;
}, function(response) {
//an error has occurred
});
答案 1 :(得分:0)
此:
'http://api.com/team/' + '$scope.thisId' +'?Authorization=565eaa22251f932b9f000001d50aaf0b55c7477c5ffcdbaf113ebbda'
等于http://api.com/team/$scope.thisId?Authorization=[...]
,这不是你想要的。删除$scope.thisID
周围的引号,如下所示:
'http://api.com/team/' + $scope.thisId +'?Authorization=565eaa22251f932b9f000001d50aaf0b55c7477c5ffcdbaf113ebbda'
如果您已将$scope.thisId
设置为要获取的资源ID,则可以使用此功能。