firebase:angularfire 0.8.0升级保存ref.name记录

时间:2014-08-21 16:53:02

标签: javascript angularjs firebase angularfire

我使用angularfire 0.6.0并升级到0.8.0 因为我将火力记录ID保存到记录中,如下所示:

  $scope.getOpenPosten.$add({
               uID: "bla"
                }).then(function(ref) {
                    $scope.RecordID = ref.name();
                    $scope.getOpenPosten[id].oID = id;
                    $scope.getOpenPosten.$save(id);
                });

但是0.8.0我得到错误:      TypeError:无法设置属性' oID'未定义的

有人有想法吗?

1 个答案:

答案 0 :(得分:2)

从0.6升级到0.8。 Check out the docs for more details

在0.6中,当调用$firebase(ref)绑定时,数据立即同步。现在在0.8中,数据不会被同步,直到调用$asObject()$asArray()方法。

您可以在$set()绑定上致电$update()$push()$firebase(ref),以便将数据保存到您的Firebase,而无需同步任何数据。如果您想要同步并显示数据,您需要像上面提到的那样拨打$asObject()$asArray()

在您的情况下,您似乎想要添加到项目列表中。在这种情况下,$asArray()最有效:

$scope.openPostens = $firebase(yourRef).$asArray();
$scope.openPostens.$add({ uid: 'blah' }).then(function(ref) {
   ref.update({ oID: ref.name() });
});

此外,您似乎希望将push创建的唯一ID保存到对象。在AngularFire中,您不一定非必须这样做。 You can call $id on any synced $FirebaseObject and it will return it's key

var obj = $firebase(ref).$asObject();
obj.foo = "bar";
obj.$save().then(function(ref) {
   ref.name() === obj.$id; // true
});