繁体   English   中英

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

[英]How to optimise data retrieval and inter-controller data sharing with AngularFire automatic binding?

说我有

  1. 列表视图+控制器,显示项目名称列表和
  2. 详细视图+控制器,可显示项目的详细信息。

如何以不会两次读取相同数据的方式使用angularfire(最好是使用自动三向绑定)?

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

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

Firebase客户端足够聪明,可以使用本地缓存(如果存在)。 Firebase实例是每个基本Firebase URL的单例,因此在同一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');
}]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM