4

我在 Firebase 的博客上看到了这篇文章,解释了使用他们的平台创建关系数据对象的最佳方法。我正在努力将这些概念转化为 AngularFire,它们与 AngularJS 平台的集成。

具体来说,我正在尝试显示两个链接的数据集,它们具有单向指针引用,类似于他们在此示例中从他们的帖子中描述的方式:

var commentsRef = new Firebase("https://awesome.firebaseio-demo.com/comments");
var linkCommentsRef = new Firebase("https://awesome.firebaseio-demo.com/links/comments");

linkCommentsRef.on("child_added", function(snap) {
     commentsRef.child(snap.name()).once("value", function() {
         // Render the comment on the link page.
     ));
});

问题:当前的 AngularFile 集成是否可以对其他数据对象进行指针样式引用?如果是这样,你能举个例子吗?

编辑:如果我可以访问AngularFire 为我的数据生成的唯一 ID [见下文], 我觉得我能够解决这些问题。我如何访问它们?

在此处输入图像描述

4

2 回答 2

1

好问题!

您确实需要访问唯一 ID,我们最近添加了一项功能,可让您通过以下方式访问它angularFireCollectionhttps ://github.com/firebase/angularFire/pull/26 。

如果您使用的是隐式同步方法 ( angularFire),那么只要您指定将集合类型设置为“对象”的第四个参数,您就已经可以访问键:

function MyController($scope, angularFire) {
  var url = 'https://awesome.firebaseio-demo.com/comments';
  var promise = angularFire(url, $scope, 'comments', {});
  promise.then(function() {
    var id = '-lw2NDTiZMFvzEWmSnYn';
    console.log($scope.comments[id]);
  });
}

希望这可以帮助!

于 2013-06-10T17:19:09.773 回答
0

是的,您可以访问该 ID!使用下面的代码!

var chru;
var ref = new Firebase("https://myapp.firebaseio.com/users/");
var sync = $firebase(ref);
var users= syncSelect.$asArray();
$scope.users= users;
users.$loaded().then(function() {
    chru = users.length;
});

$scope.specificIdOnSelect = function() {
    var jj;
    for (jj = 0; jj < chru; jj++) {
        var keyer = users.$keyAt(jj);
        var rec = users.$getRecord(keyer);

        if ($scope.userSelected== rec.name) {
            alert("Unique Key of " + $scope.users+ " is " + users.$keyAt(jj));
        }
    }
};

$scope.allIds = function() {
    var jj;
    for (jj = 0; jj < chru; jj++) {
        var keyer = users.$keyAt(jj);
        var rec = users.$getRecord(keyer);
        alert("Unique Key of " + $scope.users+ " is " + users.$keyAt(jj));
    }
};
于 2015-06-16T13:14:03.943 回答