Javascript AngularJS ng变化不';不处理选中的复选框
我有一个带有复选框的待办事项列表。复选框标记为“完成”待办事项,未选中的框标记为“撤消”。当我选中然后取消选中最初未选中的复选框时,一切正常。当选中时,它相应地被标记为“完成”,然后当我取消选中它时,它被标记为“撤消” 但是,当我取消选中最初选中的复选框时,问题就出现了。什么也没发生。它应该被标记为“Undone”,因为我没有选中它。之后,我会勾选该框,然后Javascript AngularJS ng变化不';不处理选中的复选框,javascript,angularjs,checkbox,Javascript,Angularjs,Checkbox,我有一个带有复选框的待办事项列表。复选框标记为“完成”待办事项,未选中的框标记为“撤消”。当我选中然后取消选中最初未选中的复选框时,一切正常。当选中时,它相应地被标记为“完成”,然后当我取消选中它时,它被标记为“撤消” 但是,当我取消选中最初选中的复选框时,问题就出现了。什么也没发生。它应该被标记为“Undone”,因为我没有选中它。之后,我会勾选该框,然后ng change会触发,但它不会将待办事项标记为“完成”,而是“撤消”,此时复选框应该是“完成”待办事项 HTML: <input
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>
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) {
致:
尝试更改:
function markAs(id) {
致:
我认为这是因为状态没有实例化 那么状态就不等于“完成”或“撤消”,他是空的或空的 试一试 而不是
if (vm.toDoStatus == 'Undone')
我认为这是因为状态没有实例化 那么状态就不等于“完成”或“撤消”,他是空的或空的 试一试 而不是
if (vm.toDoStatus == 'Undone')
不,我实际上在我的控制器上声明了方法
markAs
,所以这没有什么问题:vm.markAs=markAs代码>你能用代码链接到一个页面吗?这样我们就可以了解整个情况了吗?不,我实际上在我的控制器上声明了方法markAs
,所以这没有什么问题:vm.markAs=markAs代码>你能用代码链接到一个页面吗?这样我们就能了解整个情况了?这是因为状态没有实例化。那么状态就不等于“完成”或“撤消”,他是空的或空的Add vm.toDoStatus==“Undone”| | vm.toDoStatus==undefined
同时使用ng model和ng checked是否正常?复选框ng model是一个布尔值。所以toDo.value.members.status.value
应该是true或false,而不是Undone
(ng init=“toDo.value.members.status.value===”Undone“
)。同时在复选框上使用ng change
和ng click
又有什么意义呢?谢谢@Alexis,但是我应该把vm.toDoStatus=='Undone'| vm.toDoStatus==undefined
?这是因为状态没有实例化。那么状态就不等于“完成”或“撤消”,他是空的或空的Add vm.toDoStatus==“Undone”| | vm.toDoStatus==undefined
同时使用ng model和ng checked是否正常?复选框ng model是一个布尔值。所以toDo.value.members.status.value
应该是true或false,而不是Undone
(ng init=“toDo.value.members.status.value===”Undone“
)。同时在复选框上使用ng change
和ng click
有什么意义?谢谢@Alexis,但是我应该把vm.toDoStatus=='Undone'| | vm.toDoStatus==undefined
?我试过了,但没有真正改变。如您所见,我在这两种情况下都放置了console.log
s,但当我取消选中初始复选框时,如果(vm.toDoStatus='Done')
条件,它不会进入else内部。但是当我再检查时,它进入了那个状态,这是错误的。好的,试着在初始检查时记录状态初始检查时的状态很好。无法读取复选框初始选中时的状态。我不知道我的状态是否有问题,或者是否需要更改自身。好吧,这是因为初始检查时您的对象不存在。所以你在参数中没有任何id。我尝试了这个,但没有任何改变。如您所见,我在这两种情况下都放置了console.log
s,但当我取消选中初始复选框时,如果(vm.toDoStatus='Done')
条件,它不会进入else内部。但是当我再检查时,它进入了那个状态,这是错误的。好的,试着在初始检查时记录状态初始检查时的状态很好。无法读取复选框初始选中时的状态。我不知道我的状态是否有问题,或者是否需要更改自身。好吧,这是因为初始检查时您的对象不存在。所以参数中没有任何id