我在应用程序中使用 Angular 和 Firebase 使用 AngularFire。我在 firebase 中存储了许多文本文档。我想获取所有这些文档并返回这些文档中所有段落的数组,以便使用 Angular 进行操作。
我创建了一项服务,它将 Firebase 中的数据与可变文档同步。该服务具有以下功能,可将其更改为段落数组。
getParas: function(){
var paras = [];
for(var i=0;i< documents.length;i++){
paras = paras.concat(documents[i].text.split('\n'));
}
return paras;
}
但是,由于数据从 firebase 同步需要时间,因此函数会在对 paras 变量进行更改之前返回。
我尝试过使用 documents.$loaded().then(function(){...
但不确定如何从 getParas() 返回结果
函数。
我见过article ,但是过滤器似乎不是最好的选择?
谢谢
马修
最佳答案
您有两个选择。
- 在页面加载之前解析“documents”变量 路线。
- 使用 Promise,并确保“getParas”是 在数据设置为“documents”变量后调用。
下面是一个 promise 在 Controller 中完成所有操作的解决方案,您可以从此开始,然后尝试将其合并到您的服务中。
.controller("YourCtrl", ["$scope", "$q", function($scope, $q){
var promise = getFB();
promise.then(function(){
afterPromise();
})
function getFB(){
var documentRef = new Firebase("YOURFIREBASERURL/documents")
var fireDataDef = $q.defer()
documentRef.once("value", function(snapshot){
$scope.documents = snapshot.val();
fireDataDef.resolve();
})
return fireDataDef.promise;
}
function afterPromise(){
var $scope.paras = [];
for(var i=0;i< $scope.documents.length;i++){
$scope.paras = $scope.paras.concat(documents[i].text.split('\n'));
}
}
}]
关于javascript - 延迟返回变量,直到数据从 Firebase 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26628898/