为什么按钮点击事件在Aurelia中被禁用后仍被触发?

为什么按钮点击事件在Aurelia中被禁用后仍被触发?,aurelia,Aurelia,我有以下按钮,我只想在满足给定条件时激活该按钮(单击启用),但是,尽管视觉上禁用了按钮,单击事件仍会在用户单击时触发 <button class="btn btn-default" click.delegate="doSomething()" type="submit" disabled.bind="true"></button> [更新] 将false更改为true在清理要在此发布的示例时,我错误地插入了错误的标志。这个问题仍然有效。 您正在将disabled属性

我有以下
按钮
,我只想在满足给定条件时激活该按钮(单击启用),但是,尽管视觉上禁用了
按钮
单击事件仍会在用户单击时触发

<button class="btn btn-default" click.delegate="doSomething()" type="submit" disabled.bind="true"></button>

[更新]
false
更改为
true
在清理要在此发布的示例时,我错误地插入了错误的标志。这个问题仍然有效。

您正在将
disabled
属性绑定到值false,这意味着属性
disabled
将不会添加到按钮。如果要禁用按钮,请执行以下操作:

编辑:基于问题更改
你的代码可以工作。当您在元素上具有disabled属性时,此按钮将被禁用,这意味着无法触发click事件,如果click事件无法触发,则您将无法点击该
doSomething
功能。
函数可能仍然启动的原因可能基于代码中的其他地方。使用事件冒泡时,很可能会触发另一个事件,并冒泡到触发
doSomething
,但老实说,如果没有足够的代码上下文,则无法确定仍在调用函数的具体原因

TL;DR

您的代码在干净的环境中工作,如果您的代码仍然失败,那么您的代码库中还有其他原因导致此问题。

已禁用。需要将bind
设置为true,以防止触发
click.delegate=“doSomething()”
。尝试在视图模型中公开布尔变量,并将
禁用。bind=“false”
更改为
禁用。bind=“someBoolVar”
。当满足一定条件时,在视图模型中将someBoolVar设置为true或false;这将确定是否触发了与按钮相关的事件。

您是如何尝试以视觉方式禁用按钮的?您找到解决方案了吗?在这种情况下,快速解决方法是使用
click.trigger
而不是
click.delegate
@BuildingJarl我还没有找到一个合适的解决方案,但感谢您的解决办法。@MaYaN,请在更新后再次查看答案。@MaYaN,如果您询问如何禁用按钮,那么我提供的(以及您更新的内容)是有效的。如果您仍然在调用
doSomething()
函数,那么您还有其他导致问题的代码。按钮上的
disabled
属性不仅在视觉上禁用了它,它还禁用了实际的单击功能——这也是我所期望的,但事实并非如此:-)我看看是否可以将一个JSFIDLE放在一起,我刚刚用骨架项目测试了它,它的行为确实符合预期。如果你能创作一把小提琴或一个要点,那就太好了。@MaYaN,你有小提琴来测试这个吗?此解决方案仍然有效,行为符合预期,并且可以复制。你的问题改为使用相同的代码,我告诉你,它是有效的。因此,如果它不起作用,那么其他地方的代码就会导致此问题。我将更新此答案以表示这一点。