根据数组设置ng-checked

时间:2018-06-18 13:29:41

标签: javascript angularjs

我有一个select下拉列表。在下拉列表中选择每个值后,将使用ng-repeat创建复选框。应该选择下拉列表中的所有值,并且必须检查相应的复选框并将其存储在数组中。

每当复选框发生变化时,我都会添加它或从数组中删除它。当我更改下拉列表时,检查以前下拉列表的复选框已消失。

如何根据存储选中值的数组来检查它们。

<div ng-repeat="flat in flatsArray" class="row" style="width:90%;">
       <div class="col-md-2">
          <input 
               type="checkbox" ng-true-value="{{flat.flat_id}}"
               ng-false-value="'-1'" 
               //tried this but selctedFlats is an object
               ng-checked="userEventData.selectedFlats.indexOf(sFlats[$index])"  `userEventData.selectedFlats` is an object
              ng-change="checkChanged(sFlats[$index], flat)" 
              ng-model="sFlats[$index]" />
       </div>
       <div class="col-md-10"><label for="{{flat.flat_no}}">{{flat.flat_no}}</label></div>
    </div>

$scope.userEventData.selectedFlats是已检查值的数组。

我本可以完成ng-checked="userEventData.selectedFlats.indexOf(sFlats[$index])"selectedFlats包含对象。我想检查对象中的值

1 个答案:

答案 0 :(得分:0)

NG-CHECKED正在寻找一个返回状态的表达式。 indexOf将返回一个数值&gt; = -1。虽然这样做可以创建更多的处理,因为它会反复运行函数来寻找变化。

我会推荐类似于以下内容的东西:当您获得单位数据时,在那里提供已检查的属性并将其分配给它需要的内容。它会创建更清晰的代码,并且您有1个操作对象。您可以随时根据需要对其进行解析。

ng-checked="flat.checked"

看起来更清晰,通过循环数组创建更少的处理,并且正在寻找变化。