0

在此之前,我尝试过使用angularFireangularFireCollection但总是缺少我的方法之一。

假设我有一个类似于以下的节点。你可以看到 aparent和 asingle titlemultiple childs

{
  "parent": {
   "title": "hello world",
    "childs": {
     "childA": "This is child A",
     "childB": "This is child B"
     }
  }
}

我想做的事

  1. 节点上的隐式数据绑定
  2. 监听,childs所以当有变化时它不会重新检索
  3. 能够循环子节点(子节点)并检索单个值parent.title

当我使用时angularFire,我无法到达2.

当我使用时,angulareFireCollection我无法到达1.并且3.

我真的需要一些帮助。

4

1 回答 1

1

这是我想到的几个想法。希望他们有所帮助。

手动查询标题并使用 angularFireCollectionchilds

使用您当前的结构,手动设置标题并使用 angularFireCollection 监控父/子/可能是最简单的:

var fb = new Firebase(URL);

// manually update the title
fb.child('parent/title').on('value', function(snap) {
   $scope.title = snap.val();
   // this isn't in angular's apply scope, so force an apply
   $scope.$apply();
});

// track changes to childs    
$scope.childs = angularFireCollection( fb.child('parent/childs') );

拆分数据路径:

通过拆分您的数据,使父级和子级位于不同的路径中,您可以更轻松地一起使用 angularFire 和 angularFireCollection:

/parents/$parent_id/title
/childs/$parent_id/childA/...
/childs/$parent_id/childB/...

用 angularFire 查询父数据,用 angularFireCollection 查询子数据:

var fb = new Firebase(URL);
angularFire( fb.child('parents/'+parentId), $scope, 'parent' );
$scope.children = angularFireCollection( fb.child('childs/'+parentId );
于 2013-09-07T21:13:31.717 回答