Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 输入复选框&;即使值为false,也会选中ion复选框_Angularjs_Ionic Framework_Checkbox_False Positive - Fatal编程技术网

Angularjs 输入复选框&;即使值为false,也会选中ion复选框

Angularjs 输入复选框&;即使值为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

这让我快发疯了。我几乎认为这是一个错误在这一点上

当页面加载控制器时,它会检查window.localStorage值……如果未设置,则会设置默认值。如果已设置,则根据保存的值将复选框设置为true或false。但即使在新安装之后,我也会转到选项卡,将复选框的console.log值视为“false”,但这两个复选框都已选中

我从ion复选框开始,当我无法纠正这个问题时,我改为使用标准复选框。但在这两种情况下,控制台消息都将“temp”显示为false,将其分配给$scope或getElementById(取决于我使用的是哪一个),并且呈现的页面将复选框显示为选中状态。我甚至尝试将false改为“”,将true改为“checked”-但没有任何变化

HTML


控制器:

  $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++ ;
   }