javascript - Firebase:为什么我们需要 bindTo 方法?

标签 javascript angularjs data-binding firebase

我最近开始为我的 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/

相关文章:

javascript - 如何动态路由页面?

javascript - 如何从 AngularJS 向本地服务器上的应用发出 $http 请求?

javascript - 关于 Angularjs OrderBy 与数字的想法? 10 被视为小于 2

angularjs - Restangular - 如何覆盖错误拦截器

java - 嵌套表单数据与 Spring MVC 中的对象列表绑定(bind)

javascript - 如何从本地文件中获取数据到我的 React 应用程序中?

javascript - 如何在 Angular 中动态生成不同的变量?

javascript - ajax表单提交不起作用

android - 使用数据绑定(bind)为 Button 加载 drawableLeft 图像

c# - WPF 数据绑定(bind)问题