我有一個關于這個問題的 jsfiddle。 https://jsfiddle.net/uvtw5kp1/4/$scope.Dropdown = { open: false, searchValue: "", timer: null, hideIt: function() { this.timer = $timeout(function() { alert("timeout happened the value will not change"); this.open = false; }, 50); }, hideItNotimer: function() { this.open = false; }, showIt: function() { $timeout.cancel(this.timer); this.open = true; }};當我在 ng-mouseout 上調用 Dropdown.hideItNotimer() 時它沒有問題,但是當我調用 Dropdown.hideIt() 時,變量沒有設置。我添加了一個警報以確保計時器正常工作,并且我嘗試在之后執行 scope.apply。有效的是在計時器內調用范圍級別的函數:像這樣: $scope.setDropdownHidden = function(){ $scope.Dropdown.open = false; }并在它工作的超時內調用它,但如果可以的話,我想避免這種情況。我錯過了什么?
無法在超時內設置 AngularJS 范圍變量
慕無忌1623718
2021-08-26 15:05:24
