我找不到更新项目的方法 (你可以找到所有代码here) 我尝试使用此代码
app.factory('Items', function($firebase,FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL);
var items = $firebase(ref.child('items')).$asArray();
var Item = {
all: function () {
return items;
},
create: function (item) {
return items.$add(item);
},
get: function (itemId) {
return $firebase(ref.child('items').child(itemId)).$asObject();
},
update: function (itemId, item) {
return $firebase(ref.child('items').child(itemId)).update(item);
},
delete: function (item) {
return items.$remove(item);
}
};
return Item;
});
但它不起作用。 你能帮帮我吗?
我在弗兰克范普弗伦的评论后尝试过 到
update: function (item) {
return items.$save(item);
}
但它没有工作并且让我
对象{status = 2,value ="记录无效;可以关键:[对象]"}
您可以在以下位置看到一个实用的示例:
答案 0 :(得分:4)
如果你有一个明确的update
函数,你就不会使用Angular的/ AngularFire的双向/三向数据绑定。在这种情况下,您最好绕过AngularFire进行更新,并直接调用Firebase的JavaScript API:
update: function (itemId, item) {
return ref.child('items').child(itemId).set(item);
}
请注意,我致电set
而不是update
,因为您似乎正在尝试替换Firebase可能为该项目存储的所有现有数据。
Firebase的JavaScript API和AngularFire在这里很好地协同工作,因此您不必担心数据不同步。
答案 1 :(得分:2)
对于使用新的AngularFire API $firebaseArray
和$firebaseObject
来解决此问题的任何人,方法是:
$firebaseArray.$save(recordOrIndex)
var list = $firebaseArray(ref);
list[2].foo = "bar";
list.$save(2).then(function(ref) {
ref.key() === list[2].$id; // true
});
var obj = $firebaseObject(ref);
obj.foo = "bar";
obj.$save().then(function(ref) {
ref.key() === obj.$id; // true
}, function(error) {
console.log("Error:", error);
});