我正在尝试显示“显示Y景点X”的文字,其中X是当前显示的数字,Y是存储在数据库中的总数。
我可以使用{{Attractions.length}}
轻松获得X - 但我仍然坚持使用Y的最佳方式?
目前我正在通过服务调用获取数据,这只是$http
获取一个web api控制器以获取最初的所有数据,然后可以对其进行过滤。
$scope.Attractions = dataService.getAllAttractions();
我想做点什么:
$scope.totalAttractions = dataService.getAllAttractions().length;
所以基本上我的问题是在这种情况下获得totalAttractions
的最佳方式是什么?
编辑,我的getAllAttractions
数据服务功能:
function getAllAttractions() {
$http.get("/api/v1/attractions")
.then(function (response) {
// Success
angular.copy(response.data, attractions);
}, function () {
// Failure
});
return attractions;
}
答案 0 :(得分:2)
您正尝试使用attractions
返回未定义的getAllAttractions()
。
$http.get
服务是异步的并返回一个promise。您应该返回该承诺而不是attractions
。
在您当前的代码中,我在控制台上插入了日志显示。
function getAllAttractions() {
$http.get("/api/v1/attractions")
.then(function (response) {
// Success
console.log("success");
angular.copy(response.data, attractions);
}, function () {
// Failure
console.log("fail");
});
console.log("returned value");
return attractions;
}
假设您成功调用了Web服务,控制台可能会显示:
returned value
success
这是因为成功回调是在 后返回attractions
时执行的。
你应该这样做:
<强>的DataService 强>
function getAllAttractions() {
return $http.get("/api/v1/attractions");
}
<强>控制器强>
dataService.getAllAttractions()
.then(function (response) {
// Success
$scope.attractions = response.data;
$scope.totalAttractions = $scope.attractions.length;
}, function () {
// Failure
});