angularjs select с фильтром оставляет первую строку пустой, но не тогда, когда фильтр применяется заранее

Я немного не понимаю, почему мои ng-options снова возвращают пустую строку с фильтром.

Взгляните на этот плункер

Идея состоит в том, чтобы отобразить в раскрывающемся списке организационную диаграмму, основанную на объекте с древовидной структурой.

Для этого я создал сервис, который превращает дерево в одномерный объект. Я использую эту службу внутри фильтра, который вызывается в моей опции ng.

<select ng-model="treeValue1" ng-init="treeValue1 = fields[0]" class='form-control' 
   ng-options="element as element.display for element in fields | flattenTree">
  </select> 

при этом отображается пустая строка, и когда я выбираю значение, оно просто не выбирает его и возвращается к пустой строке. Это еще больше сбивает с толку.

Но когда я использую функцию сглаживания заранее в контроллере, она работает нормально.

<select ng-model="treeValue2" ng-init="treeValue2 = flatFields[0]" class='form-control' 
   ng-options="element as element.display for element in flatFields">
  </select> 

Понятия не имею, почему первый не работает.

Мы будем очень благодарны за вашу помощь, и если вы сможете объяснить такое поведение, это будет здорово.

Спасибо!


person vonwolf    schedule 25.06.2014    source источник


Ответы (1)


фильтр создает новый массив, поэтому в основном ваша модель и ваши параметры - это 2 разных объекта, поэтому выбор не распознает значение модели как часть своего выбора, поэтому у вас ничего не выбрано в первом. на втором вы выбираете модель из уже отфильтрованного набора данных, поэтому модель действительно принадлежит к массиву параметров

person Dayan Moreno Leon    schedule 25.06.2014