2017-05-11 71 views
0

我有一个作用域内的http调用后没有更新的作用域。Angular JS:赋值后未更新的值

var form = {} 
    var requestForm = {} 
    requestForm['name'] = $scope.brand.name; 
    requestForm['country'] = $scope.brand.countryCode; 

所以我设置一个$scope.mergeId我的初始化为0值,那么tableFactory.setMergeRequest将调用工厂文件中的HTTP调用,并会返回一个对象,用布尔和编号。

$scope.mergeId = 0; 
    //set merge request/id 
    tableFactory.setMergeRequest(requestForm).then(function(data){ 

     if(data.mergeRequestStatus){ 

      console.log(data); 

      $scope.mergeId = data.insertedRequestId; //456 


     }else{ 
      console.log('no merge id'); 
     } 

    }); 

    form['mergeId'] = $scope.mergeId; 

布尔将是真实的,它应该在ID(456)分配给$scope.mergeId。然后,该范围将用于分配将用于另一个http调用的form['mergeId']变量。

当我检查控制台时,窗体变量为零,所以它没有更新。我拿出了初始化程序,但后来说它是未定义的。 http调用正在发回数据,这只是范围没有被更新。

有没有人经历过这个问题?我应该改变这个http调用的设置吗?我试图做到这一点,但它没有设置正确的值,它设置了一个对象。

form['mergeId'] = tableFactory.setMergeRequest(requestForm).then(function(data){ 

     if(data.mergeRequestStatus){ 

      return data.insertedRequestId 

     }else{ 

      return null 
     } 

    }); 

我从这种方式得到的回应是一个d,我如何得到这个值?

enter image description here

请帮帮忙,我已经遇到这个问题了一会儿。您的帮助将不胜感激。

附加信息

这是HTTP调用其中tableFactory.setMergeRequest被触发。

var setMergeRequest = function(object){ 

     var mergeRequestCall = { 
      method: 'POST', 
      url: CONFIG.PYTHON_API_END_POINT + '/api/mergerequest', 
      data: object 
     } 

     var d = $q.defer(); 

     $http(mergeRequestCall) 
     .success(function(response){ 
     d.resolve(response); 
     }).error(function(response){ 
     d.resolve([]); 
     }); 


     return d.promise; 
    } 

的回应是:

{ 
    "insertedRequestId": 456, 
    "mergeRequestStatus": true 
} 
+0

http,从第一个http获得响应之后,对吗? –

+0

@AgamBanga是的,这是正确的 – medev21

+1

你可以看看JavaScript中的承诺链。你的问题是''chaining in JS'的使用案例 –

回答

0

应设置在那里的承诺解决的价值,你什么时候想打第二个不值设置为功能

tableFactory.setMergeRequest(requestForm).then(function(data){ 
     if(data.mergeRequestStatus){ 
      form['mergeId'] = data.insertedRequestId; 
     }else{ 
      form['mergeId'] = null; 
     } 
    }); 
+0

我试过了,我看到了价值。现在问题是后端说是缺少合并ID。我做了一个curl请求,后端识别它。这让我相信这是一个前端问题。 – medev21

+0

你可以分享tableFactory.setMergeRequest()和响应json –

+0

我添加了函数和响应 – medev21