在angularjs应用程序中,在何处重复调用firebase?
我需要在每个控制器中从firebase获得一组在angularjs应用程序中,在何处重复调用firebase?,angularjs,firebase,angularfire,Angularjs,Firebase,Angularfire,我需要在每个控制器中从firebase获得一组产品,如果我不必每次都进行API调用,那将是理想的选择。使用angularfire库实现此目的的最佳方法是什么 现在我有(用咖啡脚本): 有没有办法找出两个控制器中的通用代码,并在$rootScope(或类似)级别设置产品,这样我就可以在产品返回后在productCtrl中查找?正如@tymeJV在评论中所说,我确实为阵列设置了一项服务: app.constant('FBURL', "https://my-url.firebaseio.com/")
产品
,如果我不必每次都进行API调用,那将是理想的选择。使用angularfire库实现此目的的最佳方法是什么
现在我有(用咖啡脚本):
有没有办法找出两个控制器中的通用代码,并在
$rootScope
(或类似)级别设置产品
,这样我就可以在产品返回后在productCtrl
中查找?正如@tymeJV在评论中所说,我确实为阵列设置了一项服务:
app.constant('FBURL', "https://my-url.firebaseio.com/");
app.factory('products', function($firebase, FBURL) {
var ref = new Firebase(FBURL);
var products = $firebase(ref).$asArray();
return products;
}
然后只需将其注入控制器,而不是(或添加到)$firebase
:
app.controller 'catalogCtrl', ($scope, products) ->
$scope.products = products
return
在中,我使用这种方法设置了这个简单的服务包装$firebaseSimpleLogin
:
app.factory('$firebaseAuth', function($firebase, $firebaseSimpleLogin, FBURL) {
var auth = $firebaseSimpleLogin(new Firebase(FBURL));
return auth;
});
还有一个不那么琐碎的服务,它依赖于当前的URL/路由(下面的简化代码片段,“完整”代码在github上):
创建一个服务,并在该服务中使您的数据变量start为null。在第一次调用firebase时,设置您的数据变量,并在每次后续调用时检查null,如果为null,则再次从firebase检索,否则使用存储的内容。感谢您的详细回复。如何在数组中查找产品
?我遇到了这样一个问题:当我试图查找它时,数组还没有返回。在上面的流程中,我应该在哪里找到呢?请阅读AngularFire返回的承诺。在本例中,products.$loaded()。然后(函数(products){{uu.find(…
().但从角度上看,我希望您通过id将要查找的对象绑定到$scope
。请注意,您的原始问题中没有这些内容。我的原始问题是关于如何执行。
。如果不清楚,我很抱歉。我明天会尝试,如果有效,将奖励您解决方案。
app.factory('$firebaseAuth', function($firebase, $firebaseSimpleLogin, FBURL) {
var auth = $firebaseSimpleLogin(new Firebase(FBURL));
return auth;
});
app.factory('board', function($firebase, $firebaseAuth, FBURL, $routeParams) {
var ref = new Firebase(FBURL+"boards/"+$routeParams.boardId);
var cards = $firebase(ref.child('cards')).$asArray();
return {
ref: ref,
id: $routeParams.boardId,
cards: cards,
}
});