我刚刚从AngularFire开始我的第一个项目,对于在每个子元素上显式地使用$bind来处理整个数据树和$update,我感到有点困惑。
天真地,似乎很容易$bind的树根和被做。但是有角度的炮火医生说:
这种绑定对于字符串、布尔值和数字这样的原始值非常有用。
对我来说,尝试将一棵深树与1,000多个节点和多个级别同步是有意义的。但我在看一个有50个节点和3-4个层次的案子。我是不是遗漏了一些关于$bind的东西,使得它不适合自动保持整个树的同步?
发布于 2014-03-07 23:31:07
当您针对整个树进行$bind时,您将为每个更改事件发送和接收整个树。例如,
/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个节点来说,这可能不是什么大不了的事情)。
发布于 2014-03-08 09:44:50
我刚刚为您创建了一个普朗克,这是一个您想要的最简单的CRUD示例。
您也可以使用git it。
https://stackoverflow.com/questions/22232598
复制相似问题