我有一个带有复选框的待办事项列表。选中的框标记为“完成”待办事项,未选中的框标记为“撤消”。当我选中然后取消选中最初未选中的框时,一切工作正常。相应地,选中时它被标记为“完成”,当我取消选中它时,它被标记为“撤消”。
但是,当我取消选中最初选中的复选框时,问题就出现了。什么都没发生。它应该被标记为“撤消”,因为我未选中它。之后,我会重新检查该框,ng-change
会触发,但它不会将待办事项标记为“完成”,而是“撤消”,而此时选中的框应该是“完成”待办事项。
HTML:
<input icheck type="checkbox"
ng-model="toDo.value.members.status.value"
ng-change="vm.markAs(toDo.value.instanceId)"
ng-click="vm.markAs(toDo.value.instanceId)"
ng-init="toDo.value.members.status.value === 'Undone'"
ng-checked="toDo.value.members.status.value === 'Done'">
<span class="m-l-xs">{{ toDo.value.title }}</span>
Controller :
function markAs(id) {
todolistService.getToDo(id).then(function (response) {
vm.toDoStatus = response.data.members.status.value;
if (vm.toDoStatus == 'Undone') {
console.log('Done');
todolistService.markAsDone(id).then(function () {
notifyService.success($translate.instant('MSG_TODO_MARK_AS_DONE_SUCCESS'));
}, function (error) {
notifyService.showError(error);
});
} else if (vm.toDoStatus == 'Done') {
console.log('Undone');
todolistService.markAsUndone(id).then(function () {
notifyService.success($translate.instant('MSG_TODO_MARK_AS_UNDONE_SUCCESS'));
}, function (error) {
notifyService.showError(error);
});
}
}, function (error) {
notifyService.showError(error);
});
}
希望你能理解这个问题。
最佳答案
尝试改变:
function markAs(id) {
致:
vm.markAs = function(id) {
关于javascript - AngularJS ng-change 不适用于选中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37316041/