Поисковый фильтр ng-grid с помощью cellTemplate

У меня проблема с использованием фильтра поиска ng-grid в столбце, который ссылается на cellTemplate.

Мой объект данных имеет несколько полей. Одно из этих полей представляет собой массив, и я использую cellTemplate для создания div с ng-repeat, чтобы показать эти значения и применить определенный класс css в соответствии со значениями из этого массива.

Вот планклер, демонстрирующий мою проблему: plnkr.co/edit/jMvafIjqCsU0cnW6Ecvy?p=preview.

Моя проблема в том, что когда я использую свойство сетки cellTemplate, фильтр не работает должным образом. Чтобы смоделировать этот сценарий, вы можете попробовать выполнить поиск по адресу [email protected], чтобы заметить проблему. В этом плункере я использую cellTemplate для объединения «@gmail.com» с электронной почтой человека, поэтому, если вы наберете person2, фильтр будет применен, но после ввода @ вы увидите, что фильтр не работает.

Кто-нибудь может мне помочь? Спасибо!


person bob    schedule 30.09.2014    source источник


Ответы (1)


ng-grid ищет не визуализированные выходные данные cellTemplate, а базовые данные.

Таким образом, лучшим способом было бы преобразовать ваши данные, чтобы они имели значения для поиска.

  angular.forEach($scope.myData, function(value) {
    value.email+='@gmail.com';
  });

Найдите плункер здесь

person mainguy    schedule 30.09.2014
comment
И если я хочу применить стиль CSS? Например, если адрес электронной почты @gmail, вывод будет зеленым, иначе вывод будет красным? Это моя настоящая проблема, когда я должен использовать cellTemplate для управления выводом, потому что я не могу ни применить стиль из моего контроллера, ни показать массив значений в ячейке. - person bob; 30.09.2014
comment
Как вы определяете, является ли электронная почта @gmail или где-то еще? В вашем примере с плункером не нашел никакой информации о хостере, только имена. Пожалуйста, заполните myData в плункере, и я покажу вам, как написать ваш шаблон ячейки. - person mainguy; 30.09.2014
comment
Ты прав. Я отредактировал ваш плункер, чтобы показать, в чем моя проблема, и я хочу попробовать это сделать. Пожалуйста, посмотрите на плунжер. - person bob; 30.09.2014
comment
Привет, ты еще со мной? Посмотрите на обновленный плункер: plnkr.co/edit/ARlDisOS0EVHXKjQPast?p=preview - person mainguy; 30.09.2014
comment
Извините, сейчас мы находимся в аду plunker-версии. Какой плункер ты обновлял? - person mainguy; 30.09.2014
comment
Вы не можете обновить мой плункер, потому что он завис. Вы можете только раскошелиться, и вы должны сказать мне новый адрес. - person mainguy; 30.09.2014
comment
Извините, я ошибся. Вот он: plnkr.co/edit/GrA7VqaXRFvP2BUTrq8l?p=preview - person bob; 30.09.2014
comment
Может ли кто-нибудь помочь мне, пожалуйста? - person bob; 01.10.2014
comment
Не удается связаться с angular-ui.github.io/ng-grid из моего рабочее место прямо сейчас. Посмотрю на ваш поршень позже. - person mainguy; 01.10.2014
comment
Ok. Я ищу решение, но безуспешно. - person bob; 02.10.2014
comment
О, github.io снова в сети! Посмотрите на этот (очень хакерский) плункер. Введите значения, например 200 или 100, в поле поиска. Опять же, это преобразование вашего json в доступное для поиска значение, которое является полем данных столбца. Шаблон ячейки решает, какой класс использовать для фактических данных измерений. Не очень стильно, но это работает! plnkr.co/edit/Iuw025179PRBzottQzet?p=preview - person mainguy; 02.10.2014