Javascript 答应不回来
我有一个我认为应该有效的承诺,但事实并非如此。服务器返回一个200,javascript接收数据时不会生成错误,但视图中的范围不会更新。我不确定出了什么问题,因为我还是个新手。任何帮助都会很好。谢谢 我有一个服务,它有两个方法处理http回调Javascript 答应不回来,javascript,angularjs,asynchronous,sinatra,promise,Javascript,Angularjs,Asynchronous,Sinatra,Promise,我有一个我认为应该有效的承诺,但事实并非如此。服务器返回一个200,javascript接收数据时不会生成错误,但视图中的范围不会更新。我不确定出了什么问题,因为我还是个新手。任何帮助都会很好。谢谢 我有一个服务,它有两个方法处理http回调 this.addresses = []; this.getAddresses = function() { var deferred = $q.defer(); addresses = []; $http({ method: "G
this.addresses = [];
this.getAddresses = function() {
var deferred = $q.defer();
addresses = [];
$http({
method: "GET",
url: '/list_addresses'
}).success(function(data, status, headers, config) {
for (x = 0; x < data[':addresses'].length; x++) {
address = {};
address['balance'] = data[':addresses'][x][':balance'];
address['address'] = data[':addresses'][x][':address'];
address['label'] = data[':addresses'][x][':label'];
address['total_received'] = data[':addresses'][x][':total_received'];
addresses.push(address);
}
deferred.resolve(addresses);
}).error(function(data, status, headers, config) {
console.log(data)
});
return deferred.promise;
};
this.loadAccount = function() {
this.getAddresses()
.then(
function(result){
this.addresses = result;
}, function(error){
// error
}, function(percentComplete){
});
};
在我看来
<button ng-click="loadAccount()">Click me</button>
<div>{{addresses}}</div>
点击我
{{地址}}
检查此问题:
此关键字在异步回调中丢失其上下文
在异步回调console.log(this==窗口)内部//true
解决方案:
this.loadAccount=function(){
var_this=这个;
这是getAddresses()
.那么(
功能(结果){
_this.addresses=结果;
},函数(错误){
//错误
},功能(完成百分比){
});
};
Ahh。。这已经在代码中了。我一定是忘了把它放在我的问题里了。抱歉。奇怪,结果。数据
在控制台中返回为未定义
。但是,result
具有我需要的适当数据。您是对的,我被$http PROMITE和$q PROMITE resolve弄糊涂了。我再次更新了我的答案。
<button ng-click="loadAccount()">Click me</button>
<div>{{addresses}}</div>