2016-03-21 23 views
0

我在從此函數內更新我的作用域時遇到問題updateRefresh()。第一次迭代我可以看到message == "test",然後它覆蓋什麼是在範圍內,但它是我的HTML頁面,<span>{{refreshDomainStatus.message}}</span>的結合,仍然與其中message="test"在http調用中未更新的作用域綁定

我試圖$scope.$apply()但它的對象說$digest目前正在進行中。

app.controller('AssessmentController', ['$scope', '$http', '$timeout', 'ConnectionService', function ($scope, $http, $timeout, connectionService) { 

    $scope.refreshDomainStatus = { 
     message: "test" 
    }; 

    var updateRefresh = function(updateKey) { 
     $http.get('/assessment/api/update-refresh-domain/' + updateKey).success(function(response) { 
      $scope.refreshDomainStatus = response.refreshDomainStatus; 

      if (!response.refreshDomainStatus.halted) { 
       $timeout(function() { updateRefresh(updateKey); }, 250); 
      } 
     }); 
    } 

第一次迭代: First Iteration

第二次迭代: After

+0

如果您'的console.log(response.refreshDomainStatus);''你updateRefresh()'方法中的輸出是什麼?此外,顯而易見的問題,但你調用'updateRefresh()'某處開始整個循環,對吧? – Lex

+0

是的,我打電話來開始整個過程​​。第一次迭代:'response.refreshDomainStatus => Object {error:false,message:「檢索用戶列表」,暫停:false}'。 '$ scope.refreshDomainStatus => Object {error:true,message:「test」,halted:false}'。在第二次迭代$ scope.refreshDomainStatus已經設置。似乎是正確的。當我檢查仍然表示「test」的元素的範圍時:angular.element($ 0).scope()。refreshDomainStatus => Object {message:「test」,halted:false,error:false}' – Bluebaron

回答

1

你不應該設置$scope.refreshDomainStatusresponse.refreshDomainStatusSecond Iteration

整理和檢查上下文之後?

$http.get('/assessment/api/update-refresh-domain/' + updateKey).success(function(response) { 
     $scope.refreshDomainStatus = response.refreshDomainStatus; 

     if (!response.refreshDomainStatus.halted) { 
      $timeout(function() { updateRefresh(updateKey); }, 250); 
     } 
    }); 
+0

是的。你是對的。對不起,我試圖看看問題是否是一個參考問題。仍然不起作用。 – Bluebaron

+0

你有沒有檢查任何控制檯錯誤?您的$ http可能尚未解決 – amcpanaligan

+0

第一次迭代:http://imgur.com/HLVzmHA第二次迭代:http://imgur.com/mzxDewv完成後(檢查控制檯中的範圍):http://imgur.com/DCfQ4Bh – Bluebaron

0

我的問題是我創建了兩個控制器實例。我想我需要某種單,但對於未來的參考,這是不好的:

 <div class="row" ng-controller="AssessmentController"> 
      <div class="col"> 
       <button class="btn btn-default" ng-click="refresh()">Refresh</button> 
      </div> 

     </div> 
     <div ng-show="" class="row" ng-controller="AssessmentController"> 
      <div class="col"> 
       <span>{{refreshStatus.message}}</span>  
      </div> 
     </div>