【发布时间】:2014-10-05 14:22:12
【问题描述】:
按钮内有一个复选框:
<button ng-mousedown="active = !active">
<input type="checkbox" ng-checked="active"/>
Toggle!
</button>
点击按钮切换状态变量"active"。我想将复选框与"active" 同步。如果我声明
ng-model="active",
只要在复选框外按下按钮,框就会与按钮同步。
问题是当复选框被点击时,它会改变状态,但也会向按钮发送点击事件,所以这两个事件都会触发,结果,框变得不同步:
当使用ng-click 而不是ng-mousedown 时,同步行为会恢复,但是,我更喜欢使用后者,因为这样感觉更灵敏(按钮反应更快)。
有什么(Angular)方法可以让盒子保持同步并保持ng-mousedown?
【问题讨论】:
-
input是button的无效子代 -
并且禁用复选框不是一种选择,对吧?
-
@charlietfl 在什么意义上无效?它工作正常。
-
@coder 禁用会使其看起来被禁用,这会令人困惑,该复选框应该可以正常工作
-
我会使用
label而不是button,你不需要ng-mousedown,因为标签总是会改变checkbox
标签: javascript angularjs button checkbox