请参阅 - http://jsfiddle.net/U3pVM/18728/
var app = angular.module("myapp", []);
app.controller("mycontroller", function($scope, $http, $timeout) {
var url = "http://www.dummyurl.com";
$http.get(url).success(
function(response) {
$scope.items = response;
});
});
在Angular JS中,我正在使用$ http服务进行ajax调用。使用"成功"来填充数据。回调,而它没有使用"然后"打回来。 我有两个问题 -
1)成功之间有什么区别? 2)何时使用"然后",何时到"成功"?
答案 0 :(得分:2)
成功与否之间有什么区别?
then
解析代表您的http响应的对象。也就是说,then
方法的回调只接受一个具有以下结构的参数:
data – {string|Object}
- 使用转换函数转换的响应体。status – {number}
- 响应的HTTP状态代码。headers – {function([headerName])}
- 标题获取功能。config – {Object}
- 用于生成请求的配置对象。statusText – {string}
- 响应的HTTP状态文本。另一方面,success
是一种速记函数,它将http响应的不同属性(除了不太有用的statusText)传播到不同的参数中。因此,success
回调的第一个参数将仅包含http响应的响应主体(属性response.data
)。
下面的代码取自角度1.4.5,我能够找到它,因为角度为1.0.0:
promise.success = function(fn) {
promise.then(function(response) {
fn(response.data, response.status, response.headers, config);
});
return promise;
};
何时使用“then”,何时使用“成功”?
为了与其他promise库保持一致,我建议您始终使用标准then
方法。如果您将$http.success
替换为$http.then
,请注意前者response
对象中的内容相当于后者中的response.data
:
$http.get(...).success(function (response) {
return response;
}
相当于:
$http.get(...).then(function (response) {
return response.data;
}
答案 1 :(得分:2)
使用成功
$http.get(url)
.success(function(response) {
$scope.items = response;
});
});
然后使用
$http.get(url)
.then(function(data){
$scope.items = data.data
});
我认为不同的是传递参数的内容
答案 2 :(得分:0)
据我所知,我主要是在查询api或其他数据库时使用成功。然后主要用于从您自己的数据库请求数据。这是我的用法以及我看到其他人使用的内容。