AngularJS: получить свойство объекта в массиве, сопоставив другое свойство?

Стив

У меня есть массив продуктов, отображаемых в таблице с помощью AngularJS ng-repeat.

Продукты представляют собой массив объектов, возвращаемых при вызове Wordpress REST API, и каждый объект имеет «категорию», которая возвращается в виде числа.

Пример: { "name": "Foo", "cat": 12 }

Я не могу просто привязаться к свойству «cat», так как оно отображает «12», и я хочу вместо этого отображать метку категории.

Я могу запросить список всех категорий и получить такой массив:

[
    { label: 'Customer Engagement Solutions', id: 2 },
    { label: 'Small and Medium Business', id: 13 },
    { label: 'Customer Information Management', id: 4 },
    { label: 'eCommerce', id: 25 },
    { label: 'Location Intelligence', id: 16 },
    { label: 'Enterprise', id: 12 }
]

Мой продукт выше, «Foo», должен отображать «Enterprise», то есть 12.

Я знаю, что могу выполнить привязку к функции, например, {{ctrl.getCat(product)}}но я не уверен, как выполнить сопоставление элемента IDв продукте с элементом в массиве категорий и вернуть метку категории .

Это тривиально сделать в реальном Wordpress PHP, поскольку они предоставляют функцию для этой самой задачи.

Hoyen

Самый простой способ - создать новый массив продуктов, который уже отображает категории. Когда вы инициализируете контроллер с продуктами и категориями, создайте новый массив карт.

var app = angular.module('app', []);

app.controller('MainCtrl', function($scope) {

  const _categories = [
    { label: 'Customer Engagement Solutions', id: 2 },
    { label: 'Small and Medium Business', id: 13 },
    { label: 'Customer Information Management', id: 4 },
    { label: 'eCommerce', id: 25 },
    { label: 'Location Intelligence', id: 16 },
    { label: 'Enterprise', id: 12 }
  ];
  
  const _products = [
    { "name": "Foo", "cat": 12 },
    { "name": "Bar", "cat": 16 },
    { "name": "Foo Bar", "cat": 12}
  ]
  
  let categoryMap = {}
  
  _categories.forEach( (category)=>{
    categoryMap[category.id] = category.label;
  })
  
  this.products = _products.map( (product)=>{
    return {
      "name": product.name,
      "category": categoryMap[product.cat]
    }
  })
  
  
});
<!DOCTYPE html>
<html ng-app="app">

  <head>
    <script data-require="[email protected]" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js" data-semver="1.5.11"></script>
  </head>

  <body ng-controller="MainCtrl as ctrl">
    <div ng-repeat="product in ctrl.products">
      <span>Name: {{product.name}}</span>&nbsp;<span>Category: {{product.category}}</span>
    </div>
  </body>

</html>

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

AngularJS - страница загружается до инициализации переменной области видимости

Простой холст в директиве angularjs

доступ к значению текстового поля angularjs в контроллере

AngularJS Печать Да или Нет на основе логического значения

Ошибка: не удалось найти хромированный драйвер, следуя официальному руководству angularjs

Формат входного значения в Angularjs

Таблица сортировки AngularJs для уже вставленных данных

Привязка / моделирование к определенному символу в строке в AngularJS

"текущий запрос не является составным" angularjs и весенняя загрузка

AngularJS: тайм-аут не работает

Должны ли веб-сервисы AngularJS возвращать полную копию ответа?

Повторитель фильтра AngularJS с несколькими значениями

AngularJS как добавить дни / месяцы / годы к дате

сортировка массива в angularjs

angularJS $ изменение области не обновляет представление

Транспортир: фиктивный атрибут angularjs

Можно ли поместить всю форму в ОДНУ директиву AngularJs?

AngularJS: Каким образом контроллеры и фабрики / службы должны быть структурированы с помощью богатой иерархической объектной модели?

AngularJS - модель данных не привязывается в раскрывающемся списке

Показать и скрыть контроллер не работает, AngularJS

Привязка AngularJS не обновляет модель

Angularjs манипулирует каждым из повторяющихся элементов

Как исключить объект из массива в фильтре AngularJS?

Загрузите файл с сервера и укажите имя файла в angularjs

Как показать нижний колонтитул столбца в сгруппированной сетке в пользовательской сетке AngularJS?

Модель AngularJS не загружает данные в представление

Маршрутизация не работает в AngularJS

AngularJS фильтр с несколькими параметрами

Отключить кнопку отправки, если форма недействительна с AngularJS

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    Резервное копирование / восстановление kafka и zookeeper

  3. 3

    Редактировать существующий файл Excel C # npoi

  4. 4

    Ipython использует% store magic для получения динамического имени

  5. 5

    Как получить список индексов всех значений NaN в массиве numpy?

  6. 6

    Почему бы не выдать ошибку ERROR в тесте Jasmine?

  7. 7

    Дженерики и потоки Java

  8. 8

    Как отфильтровать несколько столбцов в Qtableview?

  9. 9

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  10. 10

    Как изменить значок приложения для проекта libgdx android

  11. 11

    Thymeleaf не отображает значения в проекте Spring Boot

  12. 12

    Unity Проверить, включен ли Toggle

  13. 13

    Airflow не распознает мои настройки подключения S3

  14. 14

    Flutter: Unhandled Exception: FileSystemException: Creation failed, path = 'Directory: '' (OS Error: Read-only file system, errno = 30)

  15. 15

    Bogue étrange datetime.utcnow()

  16. 16

    На графике Matplotlib не отображается легенда

  17. 17

    Создание X509Certificate2 из ECC X509Certificate выдает исключение System.NotSupportedException в C #

  18. 18

    Как добавить фреймворк в файл в папке «Источники» Xcode Playground?

  19. 19

    Выполнение команд PowerShell в программе Java

  20. 20

    Статус HTTP 403 - ожидаемый токен CSRF не найден

  21. 21

    Инструмент для вставки данных, собранных в электронной таблице, в документ Word или PDF

популярныйтег

файл