我有一个应用程序,我在其中使用NG-REPEAT:
在我视图中以复选框显示的服务器列表。 <md-checkbox
ng-repeat="business in businesses"
ng-model="business.$index"
value="business._id"
aria-label="Checkbox"
>
{{business.business_name}}
</md-checkbox>
我的挑战是试图在控制器中更新对象/数组,在这里我可以将ID的更新列表发送到服务器。
由于某种原因,当我单击其中一个复选框时,它们都被选中了。
很想知道别人的方式:
1(动态地从服务中拉出的对象数组生成许多复选框。
2(在视图中显示它们,然后将复选框的检查状态传递回控制器。
我确定这很简单,但是我只是没有取得任何进展。
默认为false将 selected
属性添加到对象init中(如果您希望复选框未默认未选择(。检查时您的属性将是正确的,否则为错误。
<md-checkbox
ng-repeat="business in businesses track by business._id"
ng-init="business['selected']=false;"
ng-model="business['selected']"
aria-label="Checkbox"
>
{{business.business_name}}
</md-checkbox>
从控制器中,如果您在businesses
数组中循环循环,则在每个对象属性selected
中都有true或false,以了解它们是否被选中,并且如果选择选择,则只需访问该对象的_id
即可。例如,您可以在控制器内部以这种方式以这种方式将所有选定的物品都有:
console.log($scope.businesses.filter(el => el.selected));
假设md-checkbox
的行为就像复选框...
<md-checkbox
ng-repeat="business in businesses"
ng-model="business.$index"
value="business._id"
aria-label="Checkbox">
{{business.business_name}}
</md-checkbox>
business.$index
将评估诸如business.3
之类的东西,这是无效的,可能不是您所期望的。
您可以按照Quirimmo的建议使用business.selected
之类的东西。
,如果selected
不确定或错误,这将使复选签不受检查,并且当我们选中复选框时,它将将selected
设置为true。
在另一端,当您要保存这些选择时,您将必须确保您的控制器正在寻找selected
属性。