每当选中一个复选框时,我想监听是否按下某个键并运行一些代码。该代码需要访问复选框值或ngModel。我考虑过像
这样的东西<input ng-repeat="task in $store.taskarr track by $index" ng-change="checked(task)" ng-model="task" type="checkbox" value="{{task}}" />
controller('checkboxController', function($scope){
$scope.checked = function(task){
//here goes something like a keydown-listener if task is true
console.log(task);
}
}).
我的方法有问题。
Console.log返回true / false,而不是我期望的{{task}}中的值。 我不确定是否应该使用ng-keydown-event或onkeydown。该事件需要是全局的,因为可以同时检查多个复选框。
如果您更喜欢其他方法,例如属性指令或其他方法,我会全神贯注!
答案 0 :(得分:2)
尝试使用ng-click
<ul class="unstyled" style="list-style:none;">
<li ng-repeat="bill in bills">
<input type="checkbox" ng-model="bill.status" ng-click="updateStatus(e, bill._id)" />
<span>{{bill.description}}</span>
</li>
'use strict';
angular.module('Bills')
.controller('BillCtrl', function ($scope) {
$scope.updateStatus = function(event, id){
alert('Registro modificado: ' + id);
};
$scope.bills = [
{'_id': '0', 'status' : false , 'description': 'Telefone'},
{'_id': '1', 'status' : false , 'description': 'Embasa'},
{'_id': '2', 'status' : false , 'description': 'Coelba'},
{'_id': '3', 'status' : false , 'description': 'Internet'},
{'_id': '4', 'status' : false , 'description': 'Carro'},
{'_id': '5', 'status' : false , 'description': 'Seguro'}
];
});