Angular ng-options 到 ng-repeat 额外选项

Angular ng-options to ng-repeat with extra 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 在选择 "static" 选项时包含名为 c1、c2 或 c3 的字符串,但我希望它包含整个 collection 对象他们被选中。

我尝试使用 <option ng-repeat="collection in seriesCollection" value="{{ collection }}">,但存储的值不是 collection 对象,而是表示其序列化的字符串。我该怎么办?

很遗憾,您尝试实现的目标无法实现。 ngOptions 指令负责将对象绑定到模型,任何其他方法如 ngRepeat 会将模型设置为字符串,因此值不能是对象并将 ngOptions 与 html option 将不起作用。

您可以利用 ngChange 或将案例添加到集合中并使用过滤器 return 仅应显示的案例