说我有
我如何使用angularfire(最好使用自动三向绑定)以不会两次获取相同数据的方式?
因为控制器#1在执行(itemsListRef).$bind($scope, 'items');
语句时已经获取了项目及其详细信息。在控制器#2中,(itemDetailRef,).$bind($scope, 'itemDetail')
然后将再次获取已在控制器#1中获取的项目详细信息数据。
可以想到一个选项:角度服务可用于获取项目数据一次,然后在控制器之间共享数据,但我不确定angularfire三向自动绑定将如何发挥作用,或者如果它甚至会工作。您的想法/建议吗?还有其他选择吗?建议的方法是什么?
答案 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');
}]);