AngularJs 条件显示 ng-options

AngularJs conditional display for ng-options

本文关键字:ng-options 显示 条件 AngularJs      更新时间:2023-09-26

我已经搜索了几个小时,但我似乎在任何地方都找不到问题的答案。我记得我以前能够实现它,但由于某种原因我丢失了代码,我似乎不记得我做了什么来让它工作。

我正在尝试使用 ng 选项在选择框中显示数组中的数据。那个我没有问题。我需要实现的是,只有某些数组值将显示/包含在选择框中。

我的数据如下:

$scope.chartList = [ { "id" : 1, "name" : "chart 1", "order" : 1, "active" : false },
                     { "id" : 2, "name" : "chart 2", "order" : 2, "active" : true },
                     { "id" : 3, "name" : "chart 3", "order" : 3, "active" : true },
                     { "id" : 4, "name" : "chart 4", "order" : 4, "active" : true }, 
                     { "id" : 5, "name" : "chart 5", "order" : 5, "active" : true } ];

我的 HTML 看起来像:

<select ng-model="toAddChart" ng-options="chart.id as chart.name for chart in chartList | filter:chart.active=='false'">
  <option value=""></option>
</select>

所以我想发生的是,如果属性"active"的值为 false,那么这是数组项目唯一一次显示/包含在选择列表中。我已经尝试了过滤器属性的不同排列,但似乎都没有奏效。

我知道我可以轻松地在标签中使用 ng-repeat 并使用 ng-show,但我记得在某处读到(再次,我找不到在哪里(这不是实现它的正确方法,使用 ng-options 是正确的方法。

真的很确定我以前能够在不创建自定义 JavaScript 过滤器的情况下做到这一点,但对于我的生活,我不记得我是如何做到的。我希望有人可以

希望有人可以帮助我,因为我没有想法。

更新:

伟大的斯科特,我想我已经明白了。

而不是:

filter:chart.active=='false'

它应该是:

filter:chart.active='false'

这只是使用的等号数量。脸掌

谢谢大家的回复。

伟大的斯科特,我想我已经明白了。

而不是:

filter:chart.active=='false'

它应该是:

filter:chart.active='false'

这只是使用的等号数量。 脸掌

谢谢大家的回复。

嘿 相反,它更好地使用

ng-options="chart.id 作为图表中图表的 chart.name | 过滤器: {活动: true}">

行得通。

filter:chart.active==false

http://jsfiddle.net/H6AZ2/116/