当ng-model设置为false时,仍会检查脏复选框

时间:2018-04-27 16:25:56

标签: javascript jquery angularjs

我有一个简单的问题,但我不知道如何在AngularJS 1.4中解决它。基本上,我有一个带有1个复选框和1个按钮的表单。该按钮应取消选中该复选框,并将布尔变量(复选框的ng-model)设置为false。

但是,当用户选中复选框(复选框状态为脏)并且按钮无法取消选中此复选框时,我无法执行此操作

有什么想法解决这个问题?

<button ng-click="uncheckCheckbox()">uncheck</button> 
<input type="checkbox"  ng-model="displayWMSLayer" ng-change="showWMSLayerOnGlobe(displayWMSLayer)"/>

一个粗略的Javascript代码,用于显示函数的作用:

function uncheckCheckbox() {
    $scope.displayWMSLayer = false;
    alert("Checkbox is unchecked automatically");
}

function showWMSLayerOnGlobe(status) {
    if (status) {
       alert("Checkbox is checked manually");
    } else {
       alert("Checkbox is unchecked manually");
    }
}

2 个答案:

答案 0 :(得分:0)

尝试这样使用

<强> JS

$scope.checkboxModel = {
  displayWMSLayer: false  
};

<强> HTML

<input type="checkbox"  ng-model="checkboxModel.displayWMSLayer" ng-change="showWMSLayerOnGlobe(checkboxModel.displayWMSLayer)"/>

答案 1 :(得分:0)

如果我理解你的问题,你只需要一个按钮取消选中该复选框。

如果我是对的,那你为什么不尝试这种方式呢?

<强> HTML: -

 <div ng-app>
  <div ng-controller="TodoCtrl">
   <button ng-click="uncheck()">uncheck</button> 
<input type="checkbox"  ng-model="displayWMSLayer"/>
  </div>
</div>

<强> JS: -

function TodoCtrl($scope) {
    $scope.displayWMSLayer = false;
    $scope.uncheck=function(){
        $scope.displayWMSLayer=$scope.displayWMSLayer?$scope.displayWMSLayer=false:$scope.displayWMSLayer;
        }
}