У меня есть API, который получает данные из базы данных. Образцы данных, которые я получаю, выглядят так:
[
{
"Name": "Bar1",
"Type": "Bar",
},
{
"Name": "Pie1",
"Type": "Pie",
},
{
"Name": "Pie2",
"Type": "Pie",
},
{
"Name": "Line1",
"Type": "Line",
},
{
"Name": "Pie3",
"Type": "Pie",
},
]
Я хочу получить все имена, принадлежащие type = Pie, и назначить их массиву $ scope, а затем поместить его в ng-repeat. Как я могу это сделать?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чтобы получить только массив имен, отметьте это. Вы можете дополнительно назначить этот массив переменной $ scope и использовать в ng-repeat
Сначала используйте фильтр, чтобы получить отфильтрованные данные, а затем выберите из него имя.
let data = [
{
"Name": "Bar1",
"Type": "Bar",
},
{
"Name": "Pie1",
"Type": "Pie",
},
{
"Name": "Pie2",
"Type": "Pie",
},
{
"Name": "Line1",
"Type": "Line",
},
{
"Name": "Pie3",
"Type": "Pie",
},
]
let names = data.filter(d => d.Type === 'Pie').map(m => m.Name)
console.info(names)ng-repeat и filter могут легко удовлетворить это требование со стороны обзора, нет необходимости в дополнительных операциях со стороны контроллера.
Выполните следующий шаг:
В контроллере определите следующее:
$scope.items = [{
"Name": "Bar1",
"Type": "Bar",
},
{
"Name": "Pie1",
"Type": "Pie",
},
{
"Name": "Pie2",
"Type": "Pie",
},
{
"Name": "Line1",
"Type": "Line",
},
{
"Name": "Pie3",
"Type": "Pie",
},
];
Пожалуйста, используйте следующее в Html:
<div ng-controller = "YOUR_CONTROLLER">
<div ng-repeat = "item in items | filter: { type: 'pie'}">
<div>