2016-04-21 75 views
2

我有一個函數getData,它只是遞增var計數器的值。如何在控制器中更改值時更新DOM

每當增量發生,我想一定角度會自動更新一個div

裏面我已經試過NG綁定,但如果我點擊一個表單元素上它纔會起作用。

enquire.controller('DisplayEnquiries', function($scope){ 
$scope.getData = function(){ 
    console.log('Run ' + $scope.counter); 
    $scope.counter; 
    if($scope.counter == undefined || $scope.counter == null){ 
     $scope.counter = 1 
     $scope.counter++; 
    } 
    else{ 
     $scope.counter++; 
    } 
    console.log('Execute ' + $scope.counter); 
    $scope.count = $scope.counter; 
} 
    setInterval($scope.getData, 1000); 
}); 

HTML

<div class="col-sm-5" ng-controller="DisplayEnquiries"> 
     <h4>Unread User Queries</h4> 
     <p> 
      Count : <span ng-bind="count"></span> 
     </p> 
    </div> 

回答

4

角確實有消化系統,有助於提供了最新在視圖結合。但是當你更新角度外部世界的角度綁定(如any (async) event)時,角度不理解更改,結果摘要循環不會觸發更新的綁定。所以在你的情況下,你正在運行更新綁定的setInterval(異步事件)。

在這種情況下,您需要手動啓動摘要循環($scope.$apply()/$scope.$digest())以在視圖上相應地查找更改和更新綁定。但是我仍然希望您使用$interval服務,它提供的開箱即用功能與setInterval &的功能相同,它確實保留摘要循環以保持綁定同步。

您應該使用的$interval代替setInterval

$interval($scope.getData, 1000); 
相關問題