Я искал несколько часов, и я не могу найти ответ на мою проблему в любом месте. Я помню, что я смог реализовать его раньше, но по какой-то причине я потерял код, и я не могу вспомнить, что я сделал, чтобы заставить его работать.
Я пытаюсь отображать данные из массива в поле выбора с помощью 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, но для жизни меня не помню, как я это сделал. Я надеюсь, что кто-то сможет
Надеюсь, кто-то может помочь мне в этом, потому что у меня нет идей.
Update:
Великий Скотт, я думаю, что у меня есть.
Вместо:
filter:chart.active=='false'
Это должно быть:
filter:chart.active='false'
Это просто количество равных знаков. Facepalm
Спасибо за ответы, всем.