.success 语法在 Angular v1.4.3 之前是正确的。
对于 Angular v.1.6 之前的版本,您必须使用 then 方法。 then() 方法有两个参数:一个success 和一个error 回调,它们将被一个响应对象调用。
使用then() 方法,将callback 函数附加到返回的promise。
类似这样的:
app.controller('MainCtrl', function ($scope, $http){
$http({
method: 'GET',
url: 'api/url-api'
}).then(function (success){
},function (error){
});
}
参见参考here.
Shortcut 方法也可用。
$http.get('api/url-api').then(successCallback, errorCallback);
function successCallback(response){
//success code
}
function errorCallback(error){
//error code
}
两者之间的主要区别在于.then() 调用返回一个promise(通过从callback 返回的值解析),而.success() 是注册callbacks 的更传统方式并且不返回promise。
解决方案
artistControllers.controller('DetailsController', ['$scope',
'$http','$routeParams', function($scope, $http, $routeParams) {
$http.get('js/data.json').then(function(data) {
$scope.artists = data;
$scope.whichItem = $routeParams.itemId;
});
}]);