我最近开始为我的 Angular JS 探索 Firebase。 我有两个片段,
var ref = new Firebase("https://my-firebase-id.firebaseio.com");
var syncObject = $firebaseObject(ref);
syncObject.$bindTo($scope, "data");
和
var ref = new Firebase("https://my-firebase-id.firebaseio.com");
$scope.data = $firebaseObject(ref);
现在在 View 中,我有,
<div class="container" ng-controller="FirebaseController">
{{data}}
</div>
两个 Controller $scope.data 对象都同样适用于三向数据绑定(bind),一旦底层数据发生变化, View 就会更新。所以我的疑问是,这里有什么区别?应该选择哪一个(在“syncObject.$bindTo(..)”和“$scope.data = ..”之间)以及在什么条件下。
如果不清楚,请告诉我,所以我会尝试进一步解释。
谢谢。
最佳答案
好的,经过一些测试,我自己得到了答案。
syncObject.$bindTo($scope, "data1")
实际上建立了双向绑定(bind),即如果我们稍后使用更改数据,
$scope.data1.xyz = "jjj";
它实际上实时保存回 firebase 数据库。
现在是另一种情况,
$scope.data2 = $firebaseObject(ref);
这就像一个单向绑定(bind)的原型(prototype)继承对象,它会在数据库中的数据更改时得到通知(更新),但对象本身的任何更改都不会反射(reflect)回服务器。
即
$scope.data2.xyz = "jjj"
不会更新 firebase 数据库,只会更新本地模态。来自数据库服务器的任何新推送更新都将覆盖本地更改。
我希望这能说明问题。我已验证相同。
关于javascript - Firebase:为什么我们需要 bindTo 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33974221/