14

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

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

我的数据如下:

$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'

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

谢谢大家的回复。

4

3 回答 3

20

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

代替:

filter:chart.active=='false'

它应该是:

filter:chart.active='false'

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

谢谢大家的回复。

于 2014-03-14T01:02:46.207 回答
5

嘿 相反,它更好地使用

ng-options="chart.id as chart.name for chartList | filter: {active: true}"

于 2017-05-10T05:37:26.270 回答
-1

这行得通。

filter:chart.active==false

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

于 2016-05-20T16:02:50.737 回答