2017-05-11 100 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