我已经搜索了几个小时,但我似乎无法在任何地方找到我的问题的答案。我记得我之前能够实现它,但由于某种原因我丢失了代码,而且我似乎不记得我做了什么让它工作。
我正在尝试使用 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'
这只是使用的等号的数量。掌心
谢谢大家的回复。