AngularFire绑定到范围vs $ bindTo?

时间:2016-02-25 17:18:03

标签: firebase angularfire

在角火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路数据绑定的范围吗?

1 个答案:

答案 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的好部分。