在角火documentation中,这是我试图理解的两条线:
// To make the data available in the DOM, assign it to $scope
$scope.data = obj;
// For three-way data bindings, bind it to the scope instead
obj.$bindTo($scope, "data");
他们在做同样的事情吗?两者都绑定到3路数据绑定的范围吗?
答案 0 :(得分:4)
不,他们没有做同样的事情。这将是一个非常愚蠢的API。 : - )
正在运行$scope.data = $firebaseObject(ref)
会将Firebase位置中的数据绑定到范围。对Firebase数据库中的数据进行的任何更新都将自动反映在范围内,因此 - 如果将HTML元素绑定到$scope.data
- 也会在屏幕上更新。流程是单向的:从数据库到屏幕。
调用obj.$bindTo($scope, "data")
会将Firebase位置中的数据绑定到范围,会侦听对$scope.data
的更改,然后会自动将其发送回Firebase数据库。因此,这会创建一个双向的三向绑定。 HTML中的更新将发送到数据库,数据库的更新将发送到屏幕。
这一切都有很好的记录,例如在这篇博文"Three-Way Data Binding with Firebase and Angular"中。常规的AngularFire文档还包含一个关于three-way data binding的好部分。