【发布时间】:2016-12-09 23:22:36
【问题描述】:
所以我遇到了一个问题,我花了一些时间研究但无济于事,还没有找到可行的解决方案。
我的情况:
- 我有一排复选框可以触发带有 ng-change 的函数(用户单击复选框)。
- 如果复选框被选中,每个复选框都绑定到一个 ng-model 布尔值。
- 对于每一行,我都有一个“全选”复选框,它会触发一个函数,该函数循环遍历该行中的复选框,并根据全选值将其 ng-model 的布尔值更新为真或假。
- 在 DOM 上,全选工作正常,并且每个复选框的布尔值都发生了变化,从而导致复选框被选中或取消选中。
- 即使复选框上的 ng-model bool 从 true 更改为 false,也不会触发 ng-change 函数。
我尝试在 ng-models 上实现 watchers 以尝试触发每个 ng-change,但它不起作用。
我尝试将 ng-change 更改为 ng-click 并强制将全选功能更改为 .trigger('click'),这种方法可行,但如果其中一个复选框是 hacky 并且无法正常工作已经点击了。这会导致它的真实值相反。
如果用户不直接单击复选框,是否有办法从控制器触发复选框上的 ng-change 功能?我正在通过函数传递参数,因此它必须从 ng-change 中触发,而不仅仅是在控制器中。
Here 是一个指向我想要完成的 JS Bin 的链接。
如果您单击顶部框(全选),则填充所有下部框。如果您单击其中一个下部框,它会触发 ng-change 函数,该函数会在触发的 DOM 上显示一些文本。如果单击全选按钮,它不会显示文本(不触发 ng-change)。
【问题讨论】:
-
给我们看一些代码。
-
解释很酷,但真的不能告诉我们你是否犯了一个小错误。请显示一些代码以及解释。
-
更新了 js bin 链接
标签: javascript angularjs checkbox angularjs-ng-change