我有一个应用程序,我在服务器上调用了一个企业列表,我在视图中显示为复选框,使用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)在视图中显示它们,然后将复选框的已检查状态传回控制器。
我确信这很简单,但我没有取得任何进展。
答案 0 :(得分:0)
默认情况下,向对象init添加selected
属性为false(如果您希望默认情况下未选中复选框)。
检查时您的财产将是真实的,否则为假。
<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
中有真或假,以便知道它们是否被选中,如果被选中访问该对象的_id
。
例如,您可以在控制器中以这种方式获得阵列中所有选定的项目:
console.log($scope.businesses.filter(el => el.selected));
答案 1 :(得分:0)
假设 <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
会评估类似business.selected
的内容,这些内容无效且可能不符合您的预期。
您可以使用selected
之类的东西作为quirimmo建议。
如果selected
未定义或为false,则会取消选中复选标记,当我们选中复选框时,会将selected
设置为true。
另一方面,当您想要保存这些选择时,您必须确保您的控制器正在寻找default web site
属性。