Как оптимизировать поиск данных и обмен данными между контроллерами с автоматической привязкой AngularFire?

Вопрос:

Скажем, у меня есть

  1. list view + controller, который отображает список имен элементов и
  2. подробный вид + контроллер, который показывает детали для элемента.

Как использовать угловой огонь (желательно с автоматическим трехсторонним связыванием) таким образом, чтобы он не получал одинаковые данные дважды?

Поскольку контроллер # 1 уже получил элементы и их данные, когда (itemsListRef).$bind($scope, 'items'); выполняется. В контроллере # 2 (itemDetailRef,).$bind($scope, 'itemDetail') затем (itemDetailRef,).$bind($scope, 'itemDetail') подробные данные элемента, которые снова были выбраны в контроллере # 1.

Один из вариантов, который приходит на ум: угловое обслуживание может использоваться для получения данных о элементах один раз, а затем совместного использования данных между контроллерами, но я не уверен, как это может повлиять на трехстороннее автоматическое связывание с угловым огнем или если оно будет работать, Ваши мысли/советы по этому поводу? Любые другие варианты? Каким будет рекомендуемый способ справиться с этим?

Ответ №1

Клиент Firebase достаточно умен, чтобы использовать локальный кеш, если он существует. Экземпляры Firebase являются одиночными для каждого базового URL-адреса Firebase, поэтому присоединение нескольких слушателей на разных путях в одной Firebase не приведет к ненужной сетевой активности.

Я рекомендую создать ссылку службы $firebase в службе, а затем использовать трехстороннюю привязку данных для деталей элемента в контроллере. Например:

var myapp = angular.module("myapp", ["firebase"]);

myapp.factory("ItemService", ["$firebase", function($firebase) {
return $firebase(itemsListRef);
}]);

myapp.controller("DetailCtrl", ["$scope", "ItemService", function($scope, items) {
items.$child(itemId).$bind($scope, 'itemDetail');
}]);

Оцените статью
TechArks.Ru
Добавить комментарий