![](/img/trans.png)
[英]Phaser: How to fix the delay of the restart function, i am using window.setTimeout
[英]AngularJS: How do I insert window.setTimeout into the scope function?
$scope.runTest = function() {
var statesArray = ['Running', 'Complete', 'Rejected'];
var rand = statesArray[Math.floor(Math.random() * statesArray.length)];
item.state = 'Running';
console.log(rand)
window.setTimeout(function() {
item.state = rand;
}, 6000);
};
item
狀態更改為“ Running
是成功的,但是此后狀態將不會更改為window.setTimeout
函數中所述的隨機狀態。
我在哪里錯了?
您應該使用angular的$timeout
服務
$timeout(function() {
item.state = rand;
}, 6000);
Windows.setTimeout
在角度范圍之外
您必須使用$scope.$apply()
綁定該值。
或使用$timeout
您可以使用setTimeout
或$timeout
,這里的問題是,使用setTimeout
來確保對范圍的任何更改都將反映在其他地方時,您忘記了調用scope.apply()
。
setTimeout(function () {
$scope.$apply(function () {
item.state = rand;
});
}, 6000);
如果您使用$timeout
,則不需要使用$scope.$apply()
:
$timeout(function() {
item.state = rand;
}, 6000);
有關這兩個概念的更多信息,請看一下在Angular JS中使用$ timeout而不是window.setTimeout有什么優勢? 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.