2014-10-28 71 views
1

我没有找到更新的项目 的方式(你可以找到所有的代码here) 我与此代码试图火力地堡angularfire如何更新项目

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; 
}); 

,但它不工作。 你能帮我吗?

我弗兰克面包车Puffelen的 到

update: function (item) { 
    return items.$save(item); 
} 

评论之后尝试,但它不工作,让我

对象{状态= 2,值=“无效的记录;能d ... TS键:[对象的对象]“}

你可以看到一个workish例如:

https://lalista.firebaseapp.com

回答

4

如果您有明确的update函数,那么您没有使用Angular的/ AngularFire的双向/三向数据绑定。在这种情况下,你可能会为更新以及旁路AngularFire和呼叫火力地堡的JavaScript API直接:

update: function (itemId, item) { 
    return ref.child('items').child(itemId).set(item); 
} 

请注意,我所说的set而不是update,因为它看起来像你想替换任何现有的数据火力地堡可能为该物品进行存储。

Firebase的JavaScript API和AngularFire在这里很好地结合在一起,因此您不必担心数据不同步。

+0

再次感谢:)来点,但这是我的错,我混淆了与firefire平原firebase,那么有什么办法做angularfire更新? – Whisher 2014-10-29 20:53:14

+1

我试图用你的回复,但我有错误:Firebase.set失败:第一个参数包含一个无效的键($$ conf)。键必须是非空字符串,不能包含“。”,“#”,“$”,“/”,“[”或“]” – Whisher 2014-10-30 10:10:19

+0

这听起来像你'update' )'或者类似的东西。你能分享你使用的代码片段吗? – 2014-10-30 11:25:50

2

对于使用新的API AngularFire和$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 
}); 

$firebaseObject.$save()

var obj = $firebaseObject(ref); 
obj.foo = "bar"; 
obj.$save().then(function(ref) { 
    ref.key() === obj.$id; // true 
}, function(error) { 
    console.log("Error:", error); 
});