Angular: как получить доступ к свойствам объекта из внешнего класса (в ng-repeat)?
Я создаю простое угловое приложение для обработки заказов от клиентов.
В каждом заказе я сохраняю идентификатор клиента, а не все данные клиента (денормализация-Это О. К., Но... : -).
Я не знаю, как отобразить список заказов (используя ng-repeat), отображая имя клиента...
Моя структура данных (firebase) выглядит следующим образом:
+ myapproot
+ customers
+ -JT5by1W6hylwsbVcfFg
- name = "Alice"
- ...
+ ...
+ orders
+ -JUUcRPpWnoyeXzklo9V
- customerId = "-JT5by1W6hylwsbVcfFg"
- date = "2014-08-16T16:23:47.047Z"
- amount = "100"
- ...
+ ...
Мой взгляд таков:
<table>
<tr ng-repeat="(orderId, order) in orders | orderByPriority">
<td title="Date of order">
{{ order.date | date: 'dd MMMM yyyy HH:mm' }}
</td>
<td title="Customer name">
{{ ??? }}
</td>
...
</tr>
</table>
Мой контроллер выглядит так:
app.controller('OrdersCtrl', function ($scope, Order, Customer) {
$scope.order = {};
$scope.orders = Order.all;
...
}
обновить :
То Ответ от "Сунил Д." верен, принят.
Это моя слегка модифицированная версия, так как я не храню идентификатор клиента внутри данных клиента (я получаю идентификатор из родительского ключа), и я хочу пропустить не-объектные элементы:
$scope.customersById = {};
$scope.customers = Customer.all;
$scope.customers.$on('loaded', function() {
angular.forEach($scope.customers, function(customer, id) {
if (typeof customer === 'object') {
$scope.customersById[id] = customer;
}
});
});
1 ответ:
Вы можете построить хэш клиентов и ссылаться на него в представлении:
$scope.customersById = {}; angular.forEach($scope.customers, function(customer) { $scope.customersById[customer.id] = customer; }); <td title="Customer name"> {{customersById[order.customerId].name}} </td>
Comments