我有一个逻辑,就像我有四个复选框,它们应该像现有代码一样。逻辑正在发挥作用但我确实使用语法检查并取消选中。
angular.element(document.querySelector('#c_'+j)).attr('checked', true);
angular.element(document.querySelector('#c_'+j)).attr('checked', false);
未反映在相应复选框元素的模型值中。您可以查看附带的屏幕截图。前三个框被检查但是它显示“真实”的实际点击元素休息仍为“假”。我需要更新的模型值。任何人都可以提供帮助!
答案 0 :(得分:1)
您应该对$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
}
}
}
}
}
答案 1 :(得分:0)
您可以替换
angular.element(document.querySelector('#c_'+j)).attr('checked', true);
与
var index = 'c_'+j;
$scope[index]= true
以及通过false
代替true
答案 2 :(得分:0)
检查此代码段,希望这就是您要找的内容。它适用于两种操作,检查和取消选中。
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;
angular.element(document.querySelector('#c_'+selectedcheckbox)).attr('checked', true);
var gap = arg.split('_')[1];
if(!bool){
for(var j=propt; j<= gap; j++){
var cb_id = "c_"+j;
$scope[cb_id] = true;
// angular.element(document.querySelector('#c_'+j)).attr('checked', true);
}
}else if(bool) {
for(var k=4; k>= gap; k--){
var gap_id = "c_"+k;
$scope[gap_id] = false;
// angular.element(document.querySelector('#c_'+gap)).attr('checked', false);
}
}
}
}
}
setTimeout(function(){
console.log($scope);
}, 2000);
}