2017-05-31 20 views
0

我有一个应用程序,我需要从服务器中调用商家列表,在我的视图中显示为复选框,使用ng-repeat:使用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

添加一个selected属性到您的对象init默认为false(如果你希望你的复选框默认没有被选中)。 您的财产将在选中时为true,否则为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)); 
0

假设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未定义或为false,并且当我们选中该复选框时,将会将selected设置为true,这将使未选中复选标记。

另一方面,当您要保存这些选择时,您必须确保您的控制器正在查找selected属性。

相关问题