对小树数据使用angularfire $ bind与$ update

时间:2014-03-06 18:11:12

标签: angularfire

我刚刚开始使用AngularFire进行我的第一个项目,并且在使用$bind对整个数据树与$update明确地对每个子元素使用时有点困惑。

天真地看起来很容易$bind树根并完成。但角火文档说:

  

这种绑定对字符串,布尔值和数字等原始值最有用。

尝试将一个深度树与1,000个节点和多个级别同步是很有意义的。但我正在研究一个更像50个节点和3-4个级别的案例。我错过了一些关于$bind的内容,这会使它不适合让整棵树自动保持同步吗?

2 个答案:

答案 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)

我刚刚为你创建了一个plnkr,它是你想要的最简单的一个CRUD示例。

你也可以git