gpt4 book ai didi

javascript - 无法在超时内设置 AngularJS 范围变量

转载 作者:行者123 更新时间:2023-11-29 18:40:44 24 4
gpt4 key购买 nike

<分区>

我有一个关于这个问题的 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;
}

并在有效的超时时间内调用它,但如果可以的话,我想避免这种情况。

我错过了什么?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com