Angularjs 解析中的角度链接请求
我有一个页面显示用户和用户活动的位置。根据flat structure上的Firebase文档,我将用户和位置存储在两个不同的节点中。我希望ui路由器在加载页面之前解析用户和位置数组 下面是我正在使用的代码,但我不知道如何为location变量编写return语句,以便它等待检索所有位置。(据我所知,angularfire中没有任何选项可以通过一次呼叫检索所有位置,我认为这种解决方案非常受欢迎。)Angularjs 解析中的角度链接请求,angularjs,angular-ui-router,firebase,angularfire,Angularjs,Angular Ui Router,Firebase,Angularfire,我有一个页面显示用户和用户活动的位置。根据flat structure上的Firebase文档,我将用户和位置存储在两个不同的节点中。我希望ui路由器在加载页面之前解析用户和位置数组 下面是我正在使用的代码,但我不知道如何为location变量编写return语句,以便它等待检索所有位置。(据我所知,angularfire中没有任何选项可以通过一次呼叫检索所有位置,我认为这种解决方案非常受欢迎。) 你必须用$q兑现自己的承诺: function ($q, firebase, $firebaseO
你必须用$q兑现自己的承诺:
function ($q, firebase, $firebaseObject, user) {
var promiseArray = [];
angular.forEach(user.locations, function (value, location) {
var retrievedLocation = $firebaseObject(firebase.location.child(location));
promiseArray.push(retrievedLocation.$loaded().then(function(){
return retrievedLocation;
});
})
return $q.all(promiseArray).then(function(data){
var locations = data;
return locations;
});
}
注意显然,您不再需要locations变量或.then。你可能只是:
return $q.all(promiseArray)
你必须用$q兑现自己的承诺:
function ($q, firebase, $firebaseObject, user) {
var promiseArray = [];
angular.forEach(user.locations, function (value, location) {
var retrievedLocation = $firebaseObject(firebase.location.child(location));
promiseArray.push(retrievedLocation.$loaded().then(function(){
return retrievedLocation;
});
})
return $q.all(promiseArray).then(function(data){
var locations = data;
return locations;
});
}
注意显然,您不再需要locations变量或.then。你可能只是:
return $q.all(promiseArray)
这正是我尝试过的,但由于某些原因,它不起作用。它在解析块中解析,但在控制器中未定义$q、 all(console.log())返回多个位置这应该可以工作。。。在您的控制器中,您应该插入位置$q、 all(console.log())没有真正意义,我不确定我是否理解。这太令人尴尬了。我把括号放错地方了。谢谢你的回答!发生在我们中最好的人身上。这正是我尝试过的,但由于某些原因它不起作用。它在解析块中解析,但在控制器中未定义$q、 all(console.log())返回多个位置这应该可以工作。。。在您的控制器中,您应该插入位置$q、 all(console.log())没有真正意义,我不确定我是否理解。这太令人尴尬了。我把括号放错地方了。谢谢你的回答!发生在我们最好的人身上。