使用额外选项进行ng-repeat的Angular ng-options

时间:2016-02-12 09:34:41

标签: angularjs ng-repeat ng-options

我有一个<select>元素,我使用ng-options添加插入可用值,我的代码就像

<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 个答案:

答案 0 :(得分:1)

不幸的是,你试图实现的目标无法实现。 它是ngOptions指令,负责将对象绑定到模型,而ngRepeat之类的任何其他方法都将模型设置为字符串,因此值不能是对象,并将ngOptions与html {混合{1}}无效。

您可以使用option或将案例添加到集合中,并使用过滤器仅返回应显示的案例