Я вытаскиваю 2 части данных из базы данных. Каждый возвращается в виде массива объектов JSON, хранится в угловых переменных $ области видимости, и выглядеть следующим образом:Настройка углового фильтра: истина не работает
$scope.data =
[{ code: 1, text: cat },
{ code: 2, text: dog },
{ code: 10, text: cow }]
$scope.data2 =
[{ code1: 1, code2: F1, text: meow},
{ code1: 2, code2: F2, text: woof},
{ code1: 3, code2: F10, text: moo}]
$scope.data
быть точным является массивом из 11 объектов, где code:
поле для каждого объекта 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12. $scope.data2
представляет собой массив из 100 объектов, где поле code2:
может быть F1, F2, F3, F4, F5, F6, F7, F8, F10, F11, F12.
Я тогда есть два HTML <select>
элементов, как заселенных этих два массивов и выглядеть следующим образом:
Option 1<select data-ng-model="dataCode" data-ng-options="a.code as a.text for a in data"></select>
Option 2<select data-ng-model="data2Code" data-ng-options="a.code1 as a.text for a in data2
| filter: { code2: 'F' + dataCode }"></select>
Функциональность Я пытаюсь достичь этого, при выборе элемента из $scope.data
, он фильтрует, какие элементы отображаются в $scope.data2
на основе кода. Эта логика работает, однако это только фильтры подстроки. т. е. если вы выберете cat, который имеет код 1, фильтр вернет мяу, а также moo, потому что код moo - F10, а F1 - подстрока F10.
Я хочу фильтровать в точном соответствии. Поэтому я искал stackoverflow и обнаружил пару других вопросов людей, которые задавали одно и то же. Принятый ответ был в основном одинаковым для всех: добавьте компаратор :true
к фильтру. Однако, когда я попробовал это и изменил его на filter: { code2: 'F' + dataCode } : true
, фильтр соответствует 0 результатам, и я получаю пустой <select>
выпадающий список без выбора. Установка его в false или просто удаление компаратора исправляет проблему, но тогда это не точное совпадение.
Я попытался переключиться на использование <option>
элементов вместо ngOptions
, но безрезультатно. Я подумал, что, возможно, это связано с тем, что я смешиваю строку с номером ('F' + dataCode
) в фильтре, поэтому я попытался использовать dataCode.toString()
, но это тоже не сработало. Может ли кто-нибудь понять, что я делаю неправильно, или помочь мне создать настраиваемый фильтр, если это невозможно исправить?
Его работа для меня http://plnkr.co/edit/9FjFAyvC1wTQ2hRaUzNr?p=preview. Какую угловую версию вы используете? Я также заметил, что у вас нет котировок в ваших значениях свойств 'code2' и' text' в ваших данных. – PrinceG