[英]Prevent button from being pressed twice
我是JavaScript和AngularJS的新手。 我做了一个演示,我用模态进行了简单的页面导航,所以当我点击一个按钮时,我将转到另一个页面。 但我的问题是,当我点击该按钮两次时,它会打开同一页两次。 我使用了超时功能,但我不知道为什么它不能用于我的演示,我的代码如下。
JavaScript的
$scope.foo = function() {
if ($scope.filterflg !== "1" ) {
$scope.filterflg = "1";
$scope.disabled = true;
gallery.pushPage("filter.html", {
params: FkCategory
});
$timeout(function() {
console.log("====timeout occured===");
$scope.filterflg = "0";
$scope.disabled = false;
}, 3000);
}
};
HTML
<span class="toolbar-button--quiet navigation-bar__line-height" ng-click="foo();" ng-disabled="disabled"
style="border: none; padding: 0 5px 0 0;">
setTimeout
不会修改范围,因为它是一个本机JavaScript函数,它将在AngularJS上下文之外运行,并且在AngularJS上下文之外运行的代码在更改AngularJS scope
将不会反映在UI上,直到您手动运行摘要周期。
因此,您应该使用$timeout
来代替使用setTimeout
,这将为您运行摘要周期。
用户背后的另一个原因是能够点击两次按钮,你有超过2000
毫秒( 2sec
)的超时时间; 减少你想要的将立即生效。
$timeout(function() {
disabled = false;
}, 0);
你真的不应该在你的控制器中使用jquery选择器。
你应该尝试角度声明的方式 -
JavaScript的
$scope.foo = function() {
$scope.disabled = true;
gallery.pushPage("filter.html", {params:$scope.filteid});
$timeout(function() {
console.log("======time out occured======");
$scope.disabled = false;
}, 0);
};
HTML
<span class="toolbar-button--quiet navigation-bar__line-height" ng-click="foo();" ng-disabled="disabled"
style="border: none; padding: 0 5px 0 0;">
注意我如何使用ng-disabled指令而不是jquery操作。
祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.