我正在关注有关使用MEAN堆栈创建应用程序的书。我已经到达了完全遵循代码的位置,但是却遇到了错误,因为这本书在删除$ http成功方法之前使用了旧版本的Angular。我想继续从书中学习,但是在编辑代码以使用$ http的新.then版本时遇到麻烦。我目前有
var locationListCtrl = function ($scope, loc8rData) {
$scope.message = "Searching for nearby places";
loc8rData
.success(function(data) {
$scope.message - data.length > 0 ? "" : "No locations found";
$scope.data = { locations: data };
})
.error(function (e) {
$scope.message = "Sorry, Something's gone wrong";
});
};
var loc8rData = function ($http) {
return $http.get('/api/locations?lng=-0.79&lat=51.3&maxDistance=20');
};
我查看了这个网站,发现我需要将其更改为使用$ http的新方式,即
$http(...)
.then(function onSuccess(response) {
// Handle success
var data = response.data;
...
}).catch(function onError(response) {
// Handle error
var data = response.data;
...
});
我有点新手,如果这很明显,我深表歉意,但是我想知道如何准确地修改代码,以便继续阅读本书的教程。特别是我不理解$ http(...)中的...谢谢
最佳答案
看起来省略号只是占位符(即“在此处执行代码...”),不用担心。无论如何,当Promise解析数据时,会调用.then()
。
$http.get('https://www.google.com')
.then(function(response) {
console.log('Got response: ', response);
})
.catch(function(error) {
console.log('Got an error: ', error);
});
具体来说,在您的代码段中:
var locationListCtrl = function ($scope, loc8rData) {
$scope.message = "Searching for nearby places";
return loc8rData
.then(function(data) {
$scope.message = data.length > 0 ? "" : "No locations found";
$scope.data = { locations: data };
})
.catch(function(e) {
$scope.message = "Sorry, Something's gone wrong";
});
};
var loc8rData = function ($http) {
return $http.get('/api/locations?lng=-0.79&lat=51.3&maxDistance=20');
};