我有一个逻辑,例如我有四个复选框,它们的行为应与现有代码相同。逻辑在起作用。但是我确实使用语法检查和取消检查。
angular.element(document.querySelector('#c_'+j)).attr('checked', true);
angular.element(document.querySelector('#c_'+j)).attr('checked', false);
这不会反映在相应复选框元素的模型值中。您可以检查所附的屏幕截图。前三个框被选中,但对于实际单击的元素其余部分显示为“ true”,仍为“ false”。我需要更新的模型值。任何人都可以帮忙!
这是工作示例https://plnkr.co/edit/zA5V9gc6jTpPq3pIuvC8?p=preview
最佳答案
您应该对$scope
进行操作才能实现双向绑定。
因此,您的功能将变为
function rangeCal(arg, bool){
var tmparray= [];
var selectedcheckbox;
for(var propt in arraymatrix){
tmparray = arraymatrix[propt];
for(var i=0; i <= tmparray.length; i++){
if(month === tmparray[i]){
selectedcheckbox = propt;
var a = 'c_'+selectedcheckbox;
$scope[a]= true
var gap = arg.split('_')[1];
if(!bool){
for(var j=propt; j<= gap; j++){
var j = 'c_'+j;
$scope[j]= true
}
}else if(bool) {
for(var k=propt; k<= gap+1; k++){
if(k > gap){
var k = 'c_'+k;
$scope[k]= false
}
var j = 'c_'+j;
$scope[j]= true
}
}
}
}
}
HERE IS THE WORKING PLUNKER
关于javascript - 当使用angular.element(document.querySelector(id))。attr('checked',true)更改复选框值时,模型值不会得到反射(reflect)。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42345351/