如何使用AngularFire自动绑定优化数据检索和控制器间数据共享?

时间:2014-02-17 09:07:46

标签: firebase angularfire

说我有

  1. 列表视图+控制器,显示项目名称列表和
  2. 详细视图+控制器,显示项目的详细信息。
  3. 我如何使用angularfire(最好使用自动三向绑定)以不会两次获取相同数据的方式?

    因为控制器#1在执行(itemsListRef).$bind($scope, 'items');语句时已经获取了项目及其详细信息。在控制器#2中,(itemDetailRef,).$bind($scope, 'itemDetail')然后将再次获取已在控制器#1中获取的项目详细信息数据。

    可以想到一个选项:角度服务可用于获取项目数据一次,然后在控制器之间共享数据,但我不确定angularfire三向自动绑定将如何发挥作用,或者如果它甚至会工作。您的想法/建议吗?还有其他选择吗?建议的方法是什么?

1 个答案:

答案 0 :(得分:1)

Firebase客户端非常智能,可以使用本地缓存(如果存在)。 Firebase实例是每个基本Firebase网址的单例,因此在同一个Firebase中以不同路径附加多个侦听器会导致不必要的网络活动。

我建议在服务中创建$firebase引用,然后使用3向数据绑定来获取控制器中项目的详细信息。例如:

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');
}]);