【发布时间】:2014-10-07 07:39:30
【问题描述】:
我正在寻找一种方法来获取子元素的方法,而不是单独加载该元素。
假设我有一个 Post 模型,每个帖子都有 cmets。这就是我获得帖子模型的方式:
var post = $firebase(new Firebase(FIREBASE_URL + "/posts/" + post_name)).$asObject();
每个帖子都有 cmets,所以我可以使用以下方法访问 cmets:
post.$loaded(function () {
var comments = post.comments;
}
现在如何将新元素推送到 cmets 而无需从 Firebase 单独加载模型?我应该能够执行以下操作,但它不起作用:
comments.$add({text: "Hi, there"});
是否有任何适当的方法来获取子元素的 firebase 方法,而无需返回服务器并获取 cmets?
【问题讨论】:
-
Firebase 只会加载一次数据。之后,您可以根据需要在其上构建任意数量的参考,而无需再次下载数据。所以在这种情况下,只需将
comments也作为$asArray()拉下来。 -
我用 post.cmets.$asArray() 尝试过 $asArray() ,但没有成功。我问这个问题的原因是因为我不想再次下载数据来执行操作,但是如果我找不到任何其他方式,我可能最终会这样做。
-
正如我已经说过的:Firebase 只会下载一次数据,无论您为其创建了多少引用。但是
post.comments.$asArray()将不起作用,因为您的post是一个普通的JavaScript 对象(不再是$firebase同步)。而是尝试$firebase(new Firebase(FIREBASE_URL + "/posts/" + post_name + "comments")).$asArray(); -
哦,我现在明白了!非常感谢。
-
也把它写在一个答案中,这样可以进行更多解释。
标签: firebase angularfire