【问题标题】:Angular Js- Is there any way to generate dynamically checkbox which are also preselected?Angular Js-有没有办法动态生成预先选择的复选框?
【发布时间】:2017-11-06 12:30:51
【问题描述】:

我已经徘徊了两到三个小时,我发现了很多相关的问题,但我的情况只是有点曲线。我必须生成一些checkboxes,这显然是通过ng-repeat 生成的。如何显示从Api 获得的预选值。这是我收到的数据类型。

预选数据

$scope.categoriess = [{"id":1,"name":"Garden Cleaning"},{"id":3,"name":"Home Cleaning"}].

这是我使用ng-repeat的数据。

ng-重复数据

$scope.categories = [{"id":1,"name":"Garden Cleaning"},{"id":2,"name":"Gutter Cleaning"},{"id":3,"name":"Home Cleaning"},{"id":4,"name":"Pool Cleaning"}

HTML

  <div ng-repeat="cats in categories">
      <input type="checkbox" ng-model="categoriess.id[cats.id]">
               <label>{{cats.name}}</label>
                  </div>

现在我将如何告诉ng-repeat 检查预选数据,此外,如果我想再检查几个框,它们也应该被选中,我希望它们存储在$scope.categoriess 中。我尝试了多种解决方案,无论是使用 ng-checked 还是在 ng-checked 中进行函数调用,都没有得到预期的结果。

【问题讨论】:

    标签: javascript angularjs checkbox dynamic angularjs-ng-repeat


    【解决方案1】:

    我看到了这个,但我不知道它是如何工作的,上帝救了我的命。看到这个checklist-model。它是如此简单,无需使用 ng-checked 或动态的东西,预先选择并轻松更新

    [1]: http://jsfiddle.net/iem_usman/v3k6pwrj/1/
    

    【讨论】:

      【解决方案2】:

      像这样改变你的html:

      <div ng-repeat="cats in categories">
         <input type="checkbox" ng-model="categoriess.id[cats.id]" ng-checked="isChecked(cats.id);">
         <label>{{cats.name}}</label>
      </div>
      

      在你的控制器中添加这个功能:

      $scope.selectedCategoriess = [{"id":1,"name":"Garden Cleaning"},{"id":3,"name":"Home Cleaning"}].
      
      $scope.isChecked = function(id){
      for (var i = 0; i < $scope.selectedCategoriess.length; i++) {
          if ($scope.selectedCategoriess[i].id == id) {
              return true;
          }
      }
      return false;
      }
      

      如果 id 可用,则检查值为“true”。

      【讨论】:

      • 这条线是什么意思? ng-model="categoriess.id[cats.id]"
      • 在你的代码里,我只加了ng-checked函数
      • 当我将 $scope.selectedCategoriess 设置为动态但我处理时,对于 (var i = 0; i 来修复它
      • 我之前试过你的解决方案,但当时我没有使用ng-model="categoriess.id[cats.id]"
      • 我在我的应用程序中实现了相同的解决方案,工作正常。
      【解决方案3】:

      你为什么不把你的数据格式化成另一个属性,比如

      {"id":1,"name":"Garden Cleaning", "checked": true}
      

      这样,当你遍历数据时,你可以勾选复选框

      <div ng-repeat="cats in categories">
        <input type="checkbox" ng-checked="cats.checked">
        <label>{{cats.name}}</label>
      </div>
      

      【讨论】:

      • 这就是我发布这个问题的原因,因为它就是这样。
      • 应该有一些引用,如果你知道默认的类别,那么你可以在ng-checked中调用一个函数来匹配id并返回true,但不是多余的!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多