我刚刚开始使用AngularFire进行我的第一个项目,并且在使用$bind
对整个数据树与$update
明确地对每个子元素使用时有点困惑。
天真地看起来很容易$bind
树根并完成。但角火文档说:
这种绑定对字符串,布尔值和数字等原始值最有用。
尝试将一个深度树与1,000个节点和多个级别同步是很有意义的。但我正在研究一个更像50个节点和3-4个级别的案例。我错过了一些关于$bind
的内容,这会使它不适合让整棵树自动保持同步吗?
答案 0 :(得分:0)
当你绑定整个树时,你正在为每个更改事件发送和接收整个树。例如,
/widgets/one/color/
如果我在窗口小部件上使用了$ bind(),每次窗口小部件颜色发生变化时,我现在都会协调系统中的每个窗口小部件。相反,要更新窗口小部件的颜色,我必须将整个树写回Firebase,有效地将系统中的每个窗口小部件设置为(希望)预先存在的值。
相反,我可以使用双向同步来引入变化:
var ref = new Firebase(URL+'/widgets');
$scope.widgets = $firebase(ref);
当我想要更新一个时,请执行以下操作:
$scope.updateColor = function(widgetKey, color) {
var child = $scope.widgets.$child(widgetKey);
child.color = color;
child.$save(); // only save one record, phew
});
更高效,更安全,因为用户不会无意中覆盖他们不打算修改的其他记录中的更改。
如果列表仅由单个用户使用并且从不同时修改,那么这不是一个问题,唯一的问题就是带宽(对于您的50个左右的节点偶尔由一个人更新可能不是什么大问题)。
答案 1 :(得分:0)