输入复选框&即使值为false,也会检查离子复选框

时间:2016-06-17 13:02:58

标签: angularjs checkbox ion false-positive

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

当页面加载控制器时,它会检查window.localStorage值...如果没有设置它,则设置默认值。如果设置,则根据保存的值将复选框设置为true或false。但是即使在全新安装之后,我也会转到选项卡,看到复选框的console.log值为" false",但两个复选框都是CHECKED。

我从离子复选框开始,当我无法解决问题时,我转到标准复选框。但在这两种情况下,控制台消息都会显示" temp"如果为false,则将其分配给$ scope或getElementById(取决于我使用的是哪个),并且呈现的页面显示已选中的复选框。我甚至尝试将虚假改为""坚持"检查" - 虽然没有任何改变。

HTML

 <ion-checkbox style="border:0px;float:right;padding-left:24px;padding-top:5px" ng-model="bikeItem.Avail" ng-checked="bikeItem.Avail" ng-change="bikes('Avail','checked',1)"></ion-checkbox>
 <input type="checkbox" id="bikesAvail" checked="{{bikeItem.Avail}}" style="border:0px;float:right;padding-left:24px;padding-top:5px" ng-click="bikes('Avail','checked',0)"></input>

控制器:

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

以上控制台消息打印: &#34; A Init:Avail:checked:false&#34; &#34; B:真&#34; ;

我的意思是,控制台消息B上方的两行表示值为FALSE并指定$ scope.bikeItem.Avail = false AND document.getElmentById(&#34; bikesAvail&#34;)。checked = false; - 但两种类型的复选框都被指定为真,并显示已检查。

当我离开页面并返回控制台消息C&amp; D fire(因为这些值现在存储在localStorage中)时,两者都显示temp = false,但仍然会检查复选框。

但是,正确的值正在被传递给正常值。第一次加载默认值为3,离开页面并返回它们是三个...用户将它们更改为任何内容,离开页面并返回并显示用户值。它只是两个复选框。

0 个答案:

没有答案