【问题标题】:All checkboxes getting checked even if one is checked即使选中了一个复选框,所有复选框也会被选中
【发布时间】:2016-11-06 04:31:29
【问题描述】:

我正在用 angularjs 制作一个基本的待办事项应用程序。 这是用于使用复选框创建新待办事项的代码

<div class="container" ng-controller = 'controller' >

    <h3>Enter Todo </h3> <input type="text" ng-model = 'new'>
    <button ng-click = 'add();' ng-disabled="status();">Add</button>

    <div ng-repeat = "i in todo" >
        <input type="checkbox" ng-model = "todo.done" /> <label>{{i.name}}</label>
     </div>

</div>

问题是即使我只选中一个复选框也会选中所有复选框

这是我的控制器模块

todoApp.controller('controller',['$scope',function($scope){ 
 $scope.new = '';   
 $scope.todo = [];

 $scope.add = function(){
    $scope.todo.push({name : $scope.new, done: false});
    console.log($scope.todo);
    $scope.new = '';
 };

 $scope.status = function(){
    return !(/\S+/.test($scope.new));
 };

【问题讨论】:

  • 您的代码不完整。请包含所有必要的代码以制作代码的工作版本(假设错误已修复)

标签: javascript angularjs checkbox


【解决方案1】:
ng-model = "i.done"

应该可以解决问题。在您的版本中,ng-model = "todo.done" todo 是一个数组,而 angular 只是在第一次使用时动态创建一个属性。这样,您的所有复选框都连接到此属性,这就是选中一个复选框会影响所有复选框的原因。

【讨论】:

    【解决方案2】:

    因为复选框列表共享相同的模型。您可以创建自定义指令,也可以使用 checklist-model 指令。

    演示网址: https://vitalets.github.io/checklist-model/

    【讨论】:

      猜你喜欢
      • 2023-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      相关资源
      最近更新 更多