在角度js版本1.2.9“成功”功能有效,但在1.6中它使用“then”功能,因此如何使用
转换下面的代码artistControllers.controller('DetailsController', ['$scope', '$http','$routeParams', function($scope, $http, $routeParams) {
$http.get('js/data.json').success(function(data) {
$scope.artists = data;
$scope.whichItem = $routeParams.itemId;
});
}]);
答案 0 :(得分:3)
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;
});
}]);
答案 1 :(得分:1)
.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
}
2之间的主要区别在于.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;
});
}]);
答案 2 :(得分:0)
$ http的结构已经改变。使用.then
代替.success
$http.get('js/data.json').then(function(data){
console.log(data);
}).catch(function(error)){
console.log(error)
});
答案 3 :(得分:0)
试试这个......
$http.get("http://localhost/angulartest/index.php/Items/getItems")
.then(function (response) {
console.log(response.data);
$scope.records = response.data;
});
答案 4 :(得分:0)
做三件事