【发布时间】:2014-08-10 00:47:09
【问题描述】:
考虑一组项目和用户。每个用户可以拥有一个或多个项目。项目集可能很大,但每个用户通常会拥有少量项目。
app:
items:
item1:
name: 'table'
color: 'white'
createdAt: '2014-08-09T12:54:58.803Z'
item2:
name: 'macbook air'
color: 'silver'
createdAt: '2014-06-09T12:54:58.803Z'
item3:
name: 'firebase t-shirt'
color: 'yellow'
createdAt: '2014-07-09T12:54:58.803Z'
users:
user1:
items:
item1: true
item3: true
user2:
items:
item2: true
给定一个用户 ID,例如user1,我想显示一个用户物品列表,按createdAt排序:
yellow firebase t-shirt
white table
Firebase 服务器上的每次更新都应反映在应用视图中。
我猜视图应该是这样的:
<div ng-repeat="item in items | orderBy:'createdAt'">
{{ item.color }} {{ item.name }}
</div>
但是,我想不出一个简单的方法来设置$scope.items。
这是我目前所做的:
var userItemsRef = new Firebase(FIREBASE_ROOT + '/users/user1/items');
$scope.userItems = $firebase(userItemsRef).$asArray();
$scope.userItems.$loaded(function() {
$scope.userItems.$watch(setItems);
setItems();
});
function setItems() {
var promises = $scope.userItems.map(function(userItem) {
var itemRef = new Firebase(FIREBASE_ROOT + '/items/' + userItem.$id);
return $firebase(itemRef).$asObject().$loaded();
});
$q.all(promises).then(function(items) {
$scope.items = items;
});
}
这是使用 AngularFire 的最佳方式吗?
【问题讨论】:
-
项目是在多个用户之间共享,还是每个项目都是唯一的并且只分配给一个用户?
-
@Kato 每个项目都分配给一个用户。
标签: angularjs firebase angularfire