如何以编程方式取消选中复选框?

时间:2015-02-27 01:59:04

标签: angularjs checkbox angular-ngmodel

我想以编程方式取消选中一个复选框。我知道如何在javascript中,但由于我使用角度,我认为它是不同的。

以下是jsfiddle的链接:https://jsfiddle.net/TKVH6/499/

这是我第一次使用jsfiddle所以如果你看不到脚本和HTML,请告诉我。

这是html

<input type="checkbox" ng-model="v" ng-click="checkAll()" />
<button ng-click="x()">eto</button>

这是角度

$scope.x = function () {
    $scope.v.checked=false;
};

我知道有很多这样的问题,我已经尝试过了,但是我无法让它发挥作用。

谢谢!

2 个答案:

答案 0 :(得分:14)

<input type="checkbox" ng-checked="v" ng-click="checkAll()" />

在您的控制器中

$scope.v = true; // or false

答案 1 :(得分:11)

第一件事:你已经在ul上指定了控制器,并在ul之外绑定了按钮的单击事件,因此在div上移动了ng-controller。

第二件事:为了实际检查,您需要设置$scope.Items[i].Selected = true;

$scope.x = function () {
    alert("x");
    $scope.Items[0].Selected=true;
};
  

为什么我还没有声明时需要设置Items [i]的Selected属性?

背后的原因是你的html绑定是这样的:

<li ng-repeat="item in Items">
    <label>{{item.Name}}
        <input type="checkbox" ng-model="item.Selected" />
    </label>
</li>

此处的每个项目都是来自Items数组的元素,这意味着您选中的复选框值现在绑定到该对象的selected属性。即使您没有在Items集合中定义该属性,angular也会创建它并将其绑定到该属性。所以你需要设置该属性。我希望它会对你有所帮助。

这是工作小提琴=&gt; link