Angularjs 输入复选框&;即使值为false,也会选中ion复选框
这让我快发疯了。我几乎认为这是一个错误在这一点上 当页面加载控制器时,它会检查window.localStorage值……如果未设置,则会设置默认值。如果已设置,则根据保存的值将复选框设置为true或false。但即使在新安装之后,我也会转到选项卡,将复选框的console.log值视为“false”,但这两个复选框都已选中 我从ion复选框开始,当我无法纠正这个问题时,我改为使用标准复选框。但在这两种情况下,控制台消息都将“temp”显示为false,将其分配给$scope或getElementById(取决于我使用的是哪一个),并且呈现的页面将复选框显示为选中状态。我甚至尝试将false改为“”,将true改为“checked”-但没有任何变化 HTMLAngularjs 输入复选框&;即使值为false,也会选中ion复选框,angularjs,ionic-framework,checkbox,false-positive,Angularjs,Ionic Framework,Checkbox,False Positive,这让我快发疯了。我几乎认为这是一个错误在这一点上 当页面加载控制器时,它会检查window.localStorage值……如果未设置,则会设置默认值。如果已设置,则根据保存的值将复选框设置为true或false。但即使在新安装之后,我也会转到选项卡,将复选框的console.log值视为“false”,但这两个复选框都已选中 我从ion复选框开始,当我无法纠正这个问题时,我改为使用标准复选框。但在这两种情况下,控制台消息都将“temp”显示为false,将其分配给$scope或getElemen
控制器:
$scope.bikeItem = [] ;
var bikeKeys = {Shub:"value",Ehub:"value",Avail:"checked",Spots:"checked"} ;
var x=0 ;
for (var keyObj in bikeKeys) {
var key = keyObj ;
var keyValue = bikeKeys[keyObj] ;
var temp = window.localStorage.getItem("bikes"+key) ;
if (temp == null || temp == "" || temp == "undefined") {
if (x < 2) {
temp = 3 ;
} else if (x > 1) {
temp = false ;
}
console.log("A Init: "+key + " :"+keyValue + ": " + temp) ;
$scope.bikeItem[key] = temp ;
window.localStorage.setItem("bikes"+key,temp) ;
document.getElementById("bikes"+key)[keyValue] = temp ;
console.log("B : "+document.getElementById("bikes"+key)[keyValue]) ;
} else {
console.log("C Init: "+key + " :"+keyValue + ": " + temp) ;
$scope.bikeItem[key] = temp ;
document.getElementById("bikes"+key)[keyValue] = temp ;
console.log("D : "+document.getElementById("bikes"+key)[keyValue]) ;
}
x++ ;
}
$scope.bikeItem=[];
var bikeKeys={Shub:“value”,Ehub:“value”,Avail:“checked”,Spots:“checked”};
var x=0;
用于(自行车中的var keyObj){
var-key=keyObj;
var keyValue=bikekekeys[keyObj];
var temp=window.localStorage.getItem(“bikes”+键);
if(temp==null | | temp==“”| | temp==“未定义”){
if(x<2){
温度=3;
}如果(x>1),则为else{
温度=假;
}
log(“初始化:“+key+”:“+keyValue+”:“+temp”);
$scope.bikeItem[键]=温度;
window.localStorage.setItem(“bikes”+键,temp);
document.getElementById(“bikes”+key)[keyValue]=temp;
log(“B:+document.getElementById(“bikes”+key)[keyValue]);
}否则{
log(“C Init:+key+:“+keyValue+”:“+temp”);
$scope.bikeItem[键]=温度;
document.getElementById(“bikes”+key)[keyValue]=temp;
log(“D:+document.getElementById(“bikes”+key)[keyValue]);
}
x++;
}
上面的控制台消息打印:
“初始化:可用:选中:错误”
“B:正确”
我的意思是,控制台消息B上面的两行表示值为FALSE,并分配$scope.bikeItem.Avail=FALSE和document.getElmentById(“bikesAvail”).checked=FALSE;-然而,这两种类型的复选框都被指定为true并显示为选中状态
当我离开页面并返回控制台消息C&D fire(因为这些值现在存储在localStorage中)时,两者都显示temp=false,但复选框仍处于选中状态
但是,将正确的值传递给just fine。第一次加载默认值为3,离开页面并返回,它们是三个…用户将它们更改为任意值,离开页面并返回,用户值显示。这只是两个复选框。使用ng model或ng checked。我修复了标准的
将true/false更改为“checked/”…对于
我认为window.localStorage.setItem()将布尔值true存储为“true”的真文本值,因此当我稍后从localStorage读取它时,我比较if(blah==true)与if(blah==“true”)…相比,现在测试。是的…window.localStorage将布尔存储为字符串。因此,布尔值TRUE保存为字符串“TRUE”。这可能是设置$scope.bikeItem[key]=temp;时
和
不起作用的行为背后的原因;。。。。temp是一个字符串,不是布尔值。argh…浪费了很多时间试图解决这个问题。使用ng model或ng checked。我修复了标准的
将true/false更改为“checked/”…对于
我认为window.localStorage.setItem()将布尔值true存储为真文本值“true”,因此,当我稍后从localStorage读回它时,我正在比较if(blah==true)和if(blah==true)…现在测试。是的…window.localStorage将布尔存储为字符串。因此,布尔值TRUE保存为字符串“TRUE”。这可能是设置$scope.bikeItem[key]=temp;时
和
不起作用的行为背后的原因;。。。。temp是一个字符串,不是布尔值。啊……浪费了很多时间想弄明白。
$scope.bikeItem = [] ;
var bikeKeys = {Shub:"value",Ehub:"value",Avail:"checked",Spots:"checked"} ;
var x=0 ;
for (var keyObj in bikeKeys) {
var key = keyObj ;
var keyValue = bikeKeys[keyObj] ;
var temp = window.localStorage.getItem("bikes"+key) ;
if (temp == null || temp == "" || temp == "undefined") {
if (x < 2) {
temp = 3 ;
} else if (x > 1) {
temp = false ;
}
console.log("A Init: "+key + " :"+keyValue + ": " + temp) ;
$scope.bikeItem[key] = temp ;
window.localStorage.setItem("bikes"+key,temp) ;
document.getElementById("bikes"+key)[keyValue] = temp ;
console.log("B : "+document.getElementById("bikes"+key)[keyValue]) ;
} else {
console.log("C Init: "+key + " :"+keyValue + ": " + temp) ;
$scope.bikeItem[key] = temp ;
document.getElementById("bikes"+key)[keyValue] = temp ;
console.log("D : "+document.getElementById("bikes"+key)[keyValue]) ;
}
x++ ;
}