首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展$timeout

扩展$timeout
EN

Stack Overflow用户
提问于 2016-07-21 07:42:46
回答 1查看 341关注 0票数 1

我已经做了一个delete按钮,它变成了确认按钮,实际上它要求您点击该按钮两次才能调用delete方法。如果您只单击该按钮一次,并且等待1秒,它将返回到默认状态。

我使用$timeout指令完成了这项工作,如下所示:

代码语言:javascript
复制
$timeout(function () {
    $timeout(setDefaults, scope.options.timeout);
}, 10);

额外的10毫秒的延迟是因为我的鼠标有时随机地认为一次点击就是双击。这10毫秒的延迟应该足够小,不允许有故障的老鼠造成意外的双击,同时也要足够小,以确保有规律的双击(除非用户每秒点击超过100次,这是不可能的)。

然而,如果用户点击一次,并保持他们的鼠标在按钮上,它仍然会变回。当用户在我的按钮上悬停时,我希望内部$timeout函数暂停。

我在指令中找不到任何暂停$timeout的内置方式。我是不是遗漏了什么?对工作有什么建议吗?

更新

我使用了以下代码来解决问题:

代码语言:javascript
复制
scope.cancelCountdown = cancelCountdown;
scope.startCountdown = startCountdown;

function cancelCountdown() {
    $timeout.cancel(scope.timer);
}

function startCountdown() {
    $timeout(function () {
        scope.timer = $timeout(setDefaults, 1000);
    }, 10);
}

然后将方法绑定到鼠标输入和鼠标离开。

代码语言:javascript
复制
<button id="confirm-button-{{id}}" 
    data-ng-click="action()"
    data-ng-mouseenter="cancelCountdown()"
    data-ng-mouseleave="startCountdown()">
</button>

这不是我所希望的,但它工作得很好!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-21 08:39:12

你试过使用ngMouseenterngMouseleave吗?您可以在鼠标结束时增加超时时间,并在离开按钮时返回1秒:

主计长:

代码语言:javascript
复制
$scope.onMouseenter = function(){
    scope.options.timeout = 100000; // 100 seconds
};

$scope.onMouseleave = function(){
    scope.options.timeout = 1000; // 1 second
};

查看:

代码语言:javascript
复制
<button .... ng-mouseenter="onMouseenter()" ng-mouseleave="onMouseleave()">

</button>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38498014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档