【发布时间】:2015-03-23 18:12:20
【问题描述】:
我有一个 Angular / Firebase 应用程序,它允许用户从部件列表中选择一个部件。每个部分都有多个字段,我希望用户能够编辑他们选择的部分的字段。一切都应该三向绑定到 Firebase,并且所有更新都会自动同步。
我的 Firebase 数据如下所示:
{
"partList": {
"part1": {
"field1": "value1",
"field2": "value2",
"field3": "value3"
},
"part2": {
"field1": "value1",
"field2": "value2",
"field3": "value3"
},
"part3": {
"field1": "value1",
"field2": "value2",
"field3": "value3"
}
}
}
通过这个 ng-repeat 列出部件:
<div ng-repeat="(key,value) in partList">{{key}}</div>
但是,我不确定如何为每个部分的 3 个字段添加表单字段,并在用户单击列表中的一个时将它们正确绑定到正确的部分。
当单击某个部件时,我尝试将带有 $scope 变量的 $bindTo 用于正确的 Firebase 子级,但是在同一个范围变量上多次调用 $bindTo 会导致一种奇怪的状态,即 Firebase 中的多个对象似乎被绑定彼此之间似乎不起作用(例如,当我进行更多绑定时,之前的绑定并没有停止)。
我可以将对象复制到不同的 $scope 变量,然后将该对象建模到我的输入字段,但是这样做时我会丢失 3 路绑定,并且必须手动更新 Firebase。
这样做的正确方法是什么?
【问题讨论】:
-
“所有内容都应该三向绑定到 Firebase,并且所有更新都会自动同步。”这是一种方便,而且很好,不是您的应用程序的要求。您可以调用 $save() 来应用更改,不要过分急于尝试使用 $bindTo 来解决每个问题。
标签: javascript angularjs firebase