一尘不染

ng-options的AngularJs条件显示

angularjs

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

我正在尝试使用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,那么这是数组项唯一显示/包含在选择列表中的时间。我尝试了filter属性的不同排列,但似乎都没有用。

我知道我可以轻松地在标记中使用ng-repeat并使用ng-show,但是我记得在某处读过(同样,我找不到位置),这不是实现它的正确方法,并且使用ng-
options是正确的方式。

我真的很确定自己能够在不创建自定义javascript过滤器的情况下完成此操作,但是对于我一生来说,我不记得自己是如何做到的。我希望有人可以

希望有人可以帮助我,因为我没有主意。

更新:

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

代替:

filter:chart.active=='false'

它应该是:

filter:chart.active='false'

这只是所使用的等号的数量。 面容

谢谢大家的回复。


阅读 248

收藏
2020-07-04

共1个答案

一尘不染

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

代替:

filter:chart.active=='false'

它应该是:

filter:chart.active='false'

这只是所使用的等号的数量。面容

谢谢大家的回复。

2020-07-04