2017-09-17 54 views
0

我想通過控制器一段時間延遲後更改綁定的數據值,但沒有工作,下面是一個非常簡單的代碼:AngularJS更改綁定的數據值的延遲時間後

<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script> 
<script> 
var app=angular.module('app',[]); 
app.controller('controller',['$scope',function($scope){ 
    $scope.color='red'; 
    setTimeout(function(){ 
     $scope.color='blue'; 
    }, 0); 
}]) 
</script> 
</head> 
<body ng-app="app"> 
<div ng-controller="controller"> 
{{color}} <input ng-model="color"> 
</div> 
</body> 
</html> 

回答

1

不要使用setTimeout(function(){})。使用$timeout代替(角路)

app.controller('controller',['$scope','$timeout', function($scope, $timeout){ 
    $scope.color='red'; 
    $timeout(function(){ 
     $scope.color='blue'; 
    }); 
}]) 

也爲0毫秒就可以省略延遲值


在啓動$scope.color具有價值'red'setTimeout不會觸發摘要循環,所以當您將color更改爲blue時,它將不起作用。

$timeout觸發消化週期,因此在HTML {{color}},我們將看到blue

+0

很好,我剛剛閱讀了關於文摘週期的一些教程,現在我明白了。謝謝。 –

+1

@FanheKong歡迎您接受,如果它幫助你,謝謝 –

0
$timeout(function(){ 
    $scope.color='blue'; 
    }, 10000); 

OR

$timeout(function(){ 
    $scope.color='blue'; 
    }, 20000); 

使用第二個參數爲毫秒。你可以放任何你想要的值。如果你想在1秒後使用10000等等。

+0

非常感謝。直到這個問題我才知道消化循環的概念。 –