2016-02-12 89 views
0

我有一个<select>元素,我用ng-options添加插入可用值NG-重复,我的代码是这样角NG选项与额外的选项

<select ng-model="selectedCollection" 
    ng-options="collection.collectionName for collection in seriesCollection"> 
</select> 

这工作得很好,并在$scope.selectedCollection我有整个collection对象。

现在我需要根据一些参数添加一些额外的<option>元素。我认为最好的方法是避免使用ng-options,做这样的事情

<select ng-model="selectedCollection" 
    <option value='c1' ng-if="case1">somevalue</option> 
    <option value='c2' ng-if="case2">somevalue2</option> 
    <option ng-repeat="collection in seriesCollection"> 
     {{ collection.collectionName }} 
    </option> 
    <option value='c3' ng-if="case3">somevalue3</option> 
</select> 

这样selectedCollection包含一个字符串名为C1,C2或C3中选择“静态”选项时,但我想它包含当其中一个被选中时,整个collection对象。

我试过<option ng-repeat="collection in seriesCollection" value="{{ collection }}">但是然后存储的值不是collection对象,而是一个表示它的序列化的字符串。我能怎么做?

+1

尝试'你选择NG-value'之一。 –

+0

似乎不起作用,这样'selectedCollection'变量包含一个像这样的字符串值[“[Object Object]”,而不是“真正的”集合对象 – Naigel

+1

如果您使用ng-repeat创建选项那么该模型将是一个字符串,实现对象绑定,你将需要使用ng-options – maurycy

回答

1

不幸的是,你试图实现不了。 它是ngOptions指令,负责将对象绑定到模型上,并且任何其他方法(如ngRepeat)将设置模型为字符串,因此值不能为对象,并且与ngOptions混合使用html option将不起作用。

可以利用ngChange或个案添加到收藏和使用过滤器只返回应显示