3
Angularfire 0.8中的$save()
令我困惑。如何使用AngularFire对对象进行部分更新
这里有一个小例子 - 从我controllers.js片段文件:
.controller('LandingPageController', ['$scope','$firebase', function($scope,$firebase) {
$scope.addNode = function() {
var FB = new Firebase('https://protodb.firebaseio.com/testrecords/');
var fbr = $firebase(FB);
fbr.$set(1,{firstname: 'James'});
}
$scope.addAttribute = function() {
var FB = new Firebase('https://protodb.firebaseio.com/testrecords/1');
var fbr = $firebase(FB).$asObject();
fbr.lastname = "Bond";
fbr.$save();
}
}])
当addNode()
叫,果然,在我的火力点创造了一个节点:
但是当调用addAttribute()
时,整个记录被替换,而不是我所期望的,这是为'lastname'属性添加的。
我毫不怀疑误解了文档。谁能帮忙?
更新:
好吧,我需要等到对象被加载。它的工作原理现在,改变addAttribute
后:
$scope.addAttribute = function() {
var FB = new Firebase('https://protodb.firebaseio.com/testrecords/1');
var fbr = $firebase(FB).$asObject();
fbr.$loaded().then(function() {
fbr.lastname = "Bond";
fbr.$save();
});
}
这不起作用恐怕 - fbr是$ FirebaseObject,它没有$ update方法 - https://www.firebase .com/docs/web/libraries/angular/api.html#firebaseobject – ropz 2014-09-25 13:08:56
对不起,我以为你有一个数组。 'FirebaseObject'确实没有更新方法,所以你必须采取另一种方法。我更新了我的答案。 – 2014-09-25 13:24:40
谢谢。我现在明白了。有趣的是,文档:https://www.firebase.com/docs/web/libraries/angular/guide.html明确建议你可以在对象级别做到这一点。请参阅“保存同步对象...然后,我们可以使用$ save()方法更新对象并将其保存回firebase。” – ropz 2014-09-25 13:33:57