我正在编写一个简单的AngularJS控制器,该控制器跟踪已选中复选框的数量。尝试避免$scope.$watch
使用ng- change
总计数递增/递减。
HTML :
<form ng-controller="MainCtrl">
<table>
<tr ng-repeat="item in data">
<td>
<input type="checkbox"
value="{{item.id}}"
ng-model="item.selected"
ng-change="updateTotal($event)"> {{item.name}}
</td>
</tr>
</table>
<p>
Total checked: {{totalSelected}}
</p>
</form>
控制器片段
$scope.updateTotal = function($event) {
var checkbox = $event.target;
if (checkbox.checked) {
$scope.totalSelected++;
}
else {
$scope.totalSelected--;
}
}
我在尝试访问的控制器中不断收到错误消息$event.target
:
TypeError: Cannot read property 'target' of undefined
我创建了一个用于重新创建的Plunk: http
://plnkr.co/edit/qPzETejmMHHZCQ2sV2Sk?p=info
如果有人有任何想法或建议,我将不胜感激。
非常感谢你!
ng-change
函数不允许$event
作为变量传递。
来自AngularJS官方github回购中的合作者:
ng-change不是用于处理change事件的指令(我知道给定名称会造成混淆),但实际上是在调用ngModelController。$
setViewValue()并更改值时得到通知(因为ng-change添加了一个侦听器)到$
viewChangeListeners集合中)。所以这是预期的。
您可以阅读更多有关ng-change的$
event参数的信息
您如何解决您的要求?
只需传递item.selected
给ng-change函数并检查其值即可。
的HTML
<input type="checkbox"
value="{{item.id}}"
ng-model="item.selected"
ng-change="updateTotal(item.selected)"> {{item.name}}
控制者
$scope.updateTotal = function(item_selected) {
if (item_selected) {
$scope.totalSelected++;
}
else {
$scope.totalSelected--;
}
}
更新
您可以在此 plnkr中对其进行测试
问题内容: 我正在尝试以减轻痛苦的适当方式进行操作,但是我无法弄清楚如何处理ng-model并将其绑定到所选列表等,而且我需要在以后填充该列表并保留所选对象在里面。 每次填充列表时,我都必须覆盖类别,因为它将从服务器中拉出。 所以我想我需要数组,第二个数组将容纳所选对象? 如果我是对的,如何预选复选框? 我是否需要ng-click命令调用自定义函数才能将所选对象存储在另一个数组中? 我需要在复选框
问题内容: 我需要将复选框添加到JTree。自定义TreeCellRenderer / TreeCellEditor似乎是正确的方法。到目前为止,我在此网页中使用了CheckBoxNodeRenderer方法。除了两件事,它可以正常工作: 复选框上方+下方有额外的空格;我想使其与常规JTree相同。 我想区分单击复选框本身(应尝试切换复选框)和单击与复选框相关联的文本(应允许事件侦听器将此解释为单
问题内容: 是否可以将复选框代替“链接名称”? 如果是这样怎么办? 谢谢, 问题答案: 是的,当然有可能。您可以使用标准复选框: 然后在单独的javascript文件中使用jQuery订阅此复选框的change事件,并毫不客气地对其进行AJAXify:
问题内容: 我正在尝试为Angular建立一个日托价格计算器。 公司专营权中的每个地点每天都有单独的价格。因此,我的想法是构建一个表单,首先选择一个允许您选择位置的表单,然后再选择一系列复选框。 我在从json文件中选择正确价格的复选框中遇到ng-true-value的问题。 更新: 添加了Plunkr:http : //plnkr.co/edit/MDmrqaH1VzLBzjd5eHgT?p=p
问题内容: http://plnkr.co/edit/RP9SpO1qGjn5Ua6pZJ3D?p=preview js 和html 注意,根据半径范围结构检查了“ 2 Mile”无线电输入。为什么ng-change不触发功能? 如果我添加ng-model,则该函数会触发,但是ng-checked无法正常工作。 问题答案: 这是因为您没有使用: plnkr 更新: 很抱歉,我没有注意到您要检查默认
问题内容: 我四处张望将事件添加到复选框,我本以为人们会用来设置更改事件,但是我发现人们正在使用 是否有一个原因?它们都可以与单击的事件和键盘更改一起正常工作。我想念什么吗? 问题答案: 在IE中,仅当复选框失去焦点时才会触发。因此,如果按Tab键,则按几次空格键,然后跳出,则只会收到一个事件,但会收到多个事件。 注意:这是在IE行为正确(根据规范)且其他浏览器错误的情况下,非常非常非常少的情况之