【发布时间】:2018-06-18 13:29:40
【问题描述】:
我有一个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 包含对象。我想检查对象中的值
【问题讨论】:
-
精选公寓的定义是什么?它是一个对象,而不是一个数组?
-
@Fallenreaper 这是一个对象数组。
-
那么 indexOf 返回一个 INDEX, int, >= -1,所以你可能想稍微改变一下你的表达式?它不想要一个对象,它想要一个布尔值。我觉得这比它应该的更难。为什么不在 flatsArray 对象中定义一个选中的属性,然后说:
ng-checked="flat.checked"它会创建更少的迭代,更简洁的代码 -
@Fallenreaper 嗯,好的。写为答案,我会接受
-
当文档告诉你不要这样做时,你为什么还要使用
ng-checked和ng-model?
标签: javascript angularjs