<分区>
我有一个关于这个问题的 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;
}
并在有效的超时时间内调用它,但如果可以的话,我想避免这种情况。
我错过了什么?