我使用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'未定义的
有人有想法吗?
答案 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
});