使用NG重复来构建提交控制器的复选框列表



我有一个应用程序,我在其中使用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属性。

最新更新