簡體   English   中英

AngularJS:如何將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

請參閱本文在Angular JS中使用$ timeout而不是window.setTimeout有什么好處?

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM