Цикл по массиву данных объекта в Falcor
Допустим, у меня есть следующие маршруты:
{
route: "usersById['length']",
get: function(pathSet) {}
},
{
route: "usersById[{integers:ids}]['firstName', 'lastName']",
get: function(pathSet) {}
}
Со следующим в моем контроллере angular1:
Model.get(
'usersById.length',
'usersById[0..2]['firstName', 'lastName']'
).then(function(response) {
$scope.$apply(function() {
vm.entities = response.json.usersById;
});
});
Ответ от сервера будет выглядеть примерно так:
{
jsonGraph: {
usersById: {
"0": {
firstName: 'Jiminy',
lastName: 'Cricket'
},
"1": {
firstName: 'Jafar',
lastName: 'Husain'
},
"length": 123123
}
}
}
В моем угловом 1 шаблоне я хочу просмотреть список пользователей:
<tr ng-repeat="entity in users.entities">
<td>{{entity.firstName}} {{entity.lastName}}</td>
</tr>
Проблема в том, что в ответе присутствуют не только пользователи, во-первых, он содержит length
и, во-вторых, кажется, что обещание модели возвращает другие метаданные, которые выглядят как часть данных пути: usersById
Каков предпочтительный способ просмотра списка пользователей? Должен ли я сделать что-то подобное в своем обещании?
vm.entities = response.json.usersById.filter(function(value) {
return typeof value === 'object';
});
Я не вижу ни одного вызова API для получения необработанных значений нигде.
1 ответ
Итак, похоже, правильный способ справиться с этим - создать другой маршрут: users
который просто возвращается usersById
ссылки, таким образом, у вас есть массив только сущностей, не содержащий длины и т. д
Я предполагаю, что наличие данных пути в массиве данных было просто ошибкой.
{
users: {...},
usersById: {...}
}
<li ng-repeat="user in users">{{ user.firstName }}</li>