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;
}
});
});
557   1  

1 ответ:

Вы можете построить хэш клиентов и ссылаться на него в представлении:

$scope.customersById = {};

angular.forEach($scope.customers, function(customer) {
   $scope.customersById[customer.id] = customer;
});

<td title="Customer name">
    {{customersById[order.customerId].name}}
</td>

Comments

    Ничего не найдено.