我使用AngularJS作为数据库的前端和firebase。
我有一个显示ng-repeat
个故事的firebasearray
。这些故事中的每一个都与许多可以成为其中一部分的集合相关联。集合和故事存储在我的firebase服务器上的两个不同位置,我使用密钥将它们绑定在一起。
我在数据库中对故事对象的模型如下所示:
storyId: {
title: 'title',
in_collections: {
0: collectionId //collection id that refers to a specific collection in the database
1: collectionId
}
}
因此,每当我显示一个故事对象时,我都无法访问其标题,只能访问其标识。为了获得标题,我需要为该名称调用服务器。 我目前有这个:
模板:
<div>
{{story.title}}
In collections:
<span ng-repeat="(key, collection) in story.in_collections">
{{getCollectionTitle(key)}}
<span>
</div>
控制器:
app.controller("exploreCtrl", function($scope, Stories, Collections){
$scope.story = Stories.getStory(storyId); //comes as a firebase array
$scope.getCollectionTitle = function(collectionId){
Collections.getCollectionTitle(collectionId).then(function(title){
console.log(title.val());
return title.val();
});
}
});
服务:
app.factory('Collections', function(){
var ref = firebase.database().ref('collections');
return {
getCollectionTitle: function(collectionId){
return ref.child(collectionId).child('title').once('value');
}
}
})
.factory('Stories', function($firebaseObject){
var ref = firebase.database().ref('stories');
return{
getStory: function(id){
return $firebaseObject(ref.child(id));
}
}
})
我可以看到它在我的console.log(title.val())
中获取了正确的集合标题,但我无法找到将其应用于视图的方法。它只是空洞而且一直都是这样。
感谢任何帮助。 非常感谢你!