【问题标题】:Firebase: Why we need bindTo method?Firebase:为什么我们需要 bindTo 方法?
【发布时间】:2015-11-28 17:26:15
【问题描述】:

我最近开始为我的 Angular JS 探索 Firebase。 我有两个sn-ps,

    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);

现在在视图中,我有,

<div class="container" ng-controller="FirebaseController">
    {{data}}
</div>

两个控制器 $scope.data 对象同样适用于三向数据绑定,并且一旦底层数据发生更改,视图就会更新。所以我的疑问是,这里有什么区别?应该选择哪一个(在 'syncObject.$bindTo(..)' 和 '$scope.data = ..)' 中以及在什么条件下。

如果不清楚,请告诉我,所以我会尝试进一步解释。

谢谢。

【问题讨论】:

    标签: javascript angularjs data-binding firebase


    【解决方案1】:

    好的,经过一番测试,我自己得到了答案。

    syncObject.$bindTo($scope, "data1")
    

    实际上建立了一个双向绑定,即如果我们稍后使用更改数据,

    $scope.data1.xyz = "jjj";
    

    它实际上是实时保存在 firebase 数据库中的。

    现在是另一种情况,

    $scope.data2 = $firebaseObject(ref);
    

    这就像一个单向绑定的原型继承对象,它会在数据库中的数据更改时收到通知(更新),但对象本身的任何更改都不会反映在服务器上。

    $scope.data2.xyz = "jjj"
    

    不会更新 firebase 数据库,只会更新本地模式。来自数据库服务器的任何新推送更新都将覆盖本地更改。

    我希望这能说清楚。我也验证过。

    【讨论】:

    • 你是对的。谨慎使用.$bindTo(),因为三向数据绑定可能会产生一些意想不到的副作用。
    • 确实正确,正如大卫已经说过的那样。但是,在您的解释中,最好谈论单向和双向,而不是争论方式的数量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2021-02-05
    • 2019-03-10
    • 2023-04-06
    相关资源
    最近更新 更多