Как отобразить вложенный объект, используя группу ui-select по свойству - PullRequest
0 голосов
/ 03 мая 2018

Итак, у меня есть компонент выбора пользовательского интерфейса, который отображает список объектов, имеющих несколько свойств, одно свойство - это другой объект, мне нужно отобразить объекты массива, сгруппированные по свойству во вложенном объекте, смотрите: изображение . Пожалуйста, мне действительно нужна помощь в этом. Заранее спасибо. Вот почему я попытался:

<ui-select-match placeholder="Elija un Nutriente...">           
    {{$select.selected.nombre}}
</ui-select-match>
<ui-select-choices repeat="a in allNutrientes| filter: $select.search" group-by="'idTiposDatosAlimentos.nombreTipoDato'"> 
    <strong>{{a.abreviatura}} </strong>
      {{a.nombre}}
    <small><strong>Tipo de Dato: </strong>
      {{a.idTiposDatosAlimentos.nombreTipoDato}}
    </small>
</ui-select-choices>

1 Ответ

0 голосов
/ 03 мая 2018

Вы используете метод группировки по строке, доступный с помощью пользовательского интерфейса select. Тем не менее, у них также есть пример, который позволяет вам использовать функцию. Вы можете просто добавить функцию в свой контроллер и заменить атрибут group-by= на имя функции. Это работает, передавая каждый элемент в вашу функцию, так что функция должна исключать один параметр этого элемента. В вашем случае вы можете просто вернуть значение из поля, по которому вы хотите сгруппировать данные.

yourcontroller.js

// the rest of your controller code, left out for brevity
$scope.groupByNombreTipoDato = function (item) {
    // by returning this, it will attach this as the group by key
    // and automatically group your items by this
    return item.idTiposDatosAlimentos.nombreTipoDato;
}

yourhtml.html

// rest left out for brevity
// we are using the function we added to the controller
// we don't include the parameter, it calls it properly with just the name
<ui-select-choices repeat="a in allNutrientes| filter: $select.search" group-by="groupByNombreTipoDato">
...