Задать вопрос

AngularJS: можно ли создать справочник objectById для использования в шаблонах?

Есть ресурсы:
app.service('rest', function($resource) {
		return {
			account: $resource('/rest/account', {}, {
				get: {method: 'GET', isArray: true}
			}),
			product: $resource('/rest/product', {}, {
				get: {method: 'GET', isArray: true}
			}),
		};
	});
После того, как product-ы загрузились, они отображаются в интерфейсе:
<li ng-repeat="product in vendorProductList">
	{{product.acc_id}} {{product.descr}}
</li>

Но мне нужно, чтобы отображался не acc_id, а acc_name из справочинка account.
Как создать справочник accountById и сослаться на него из шаблона?
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
@aristov Автор вопроса
Оказалось, что я пытаюсь придумать велосипед и всё работает без лишних манипуляций.
В $rootScope добавляем справочник:
app.service('rest', function($resource, $rootScope) {
		$rootScope.refBook = {
			account: {}
		};
		return {
			account: $resource('/rest/account', {}, {
				get: {
					method: 'GET', isArray: true,
					interceptor: {
						response: function(resp) {
							var data;
							for (var i=0; i<resp.data.length; i++) {
								data = resp.data[i];
								$rootScope.refBook.account[data.id] = data;
							}
						}
					}
				}
			}),

и этот справочник оказывается доступен в шаблонах:
<li ng-repeat="product in vendorProductList">
{{refBook.account[product.acc_id].name}} - {{product.descr}}
</li>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@DanSorokin
Full-stack developer at onvoya.com
Лично я создавал еще один метод в сервисе, который добавлял новое поле (в вашем случае product.acc_name) куда записывается нужная информация. Потом этим методом в контроллере подтягивал данные. Не знаю насколько это правильно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы