Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 答应不回来_Javascript_Angularjs_Asynchronous_Sinatra_Promise - Fatal编程技术网

Javascript 答应不回来

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

我有一个我认为应该有效的承诺,但事实并非如此。服务器返回一个200,javascript接收数据时不会生成错误,但视图中的范围不会更新。我不确定出了什么问题,因为我还是个新手。任何帮助都会很好。谢谢

我有一个服务,它有两个方法处理http回调

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>