我有一个关于这个问题的 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;
}
并在它工作的超时内调用它,但如果可以的话,我想避免这种情况。
我错过了什么?
白衣染霜花
神不在的星期二
相关分类