【问题标题】:Difference between Firebase AngularFire implicit and explicit syncFirebase AngularFire 隐式和显式同步之间的区别
【发布时间】:2013-05-19 23:53:34
【问题描述】:

我是 Firebase 的新手。我想用 angularjs 构建它,我发现了 angularfire。

在列出的 angularFire 文档中 隐式和显式同步。我试图理解 github 中的文档,但我仍然不明白有什么区别以及如何使用它们。 angularFire()angularFireCollection()

另外,angularFire()angularFireCollection() 中的参数是什么意思?

感谢广告

【问题讨论】:

    标签: angularjs firebase angularfire


    【解决方案1】:

    如果您想要隐式同步,请使用 angularFire,即对模型所做的任何更改都会立即传播到所有其他客户端(反之亦然)。

    如果您想控制何时必须将任何本地数据更改发送到服务器,请使用angularFireCollection。任何远程更改仍会自动更新您的本地集合。

    隐式同步:

    myapp.controller('MyCtrl', ['$scope', 'angularFire',
      function MyCtrl($scope, angularFire) {
        var promise = angularFire(url, $scope, 'items', []);
      }
    ]);
    

    第一个参数是您要存储/检索数据的 Firebase 的位置。第二个参数是范围,第三个参数是 $scope 下的属性名称,您希望在履行承诺后立即绑定数据。例如:

    promise.then(function() {
      // Data available in $scope.items
    });
    

    第四个参数是你想要在你的 JS 对象中的数据类型。对数组使用[],对对象使用{},对字符串使用"",对数字使用1,对布尔值使用true。请注意,如果提供的 Firebase 位置中没有数据,您也可以使用此参数设置默认值。

    在隐式同步中,如果您想进行任何更改,只需修改$scope.items,更改将自动通过 Firebase 与所有其他客户端同步。同样,远程进行的任何更改都会自动更新$scope.items

    显式同步:

    myapp.controller('MyCtrl', ['$scope', 'angularFireCollection',
      function MyCtrl($scope, angularFireCollection) {
        $scope.items = angularFireCollection(url);
      }
    ]);
    

    这个方法只接受一个参数。如果要添加或删除项目,请使用 addremoveupdate 方法。例如:

    $scope.items.add({test: "object"});
    

    由于angularFireCollection 不需要范围,如果您想在控制器之外使用 Firebase(如角度指令、模块等),也可以使用它。希望这会有所帮助!

    【讨论】:

    • 我认为您在第一句话中的意思是“隐式”而不是“显式”。
    • 显式同步。所以我们不再使用 .on() .set() .push() ?
    • 感谢@bennlich,已修复! @vzhen 不,在显式同步中,您只使用add()remove()update()
    • 是的,我的意思是,我们明确地使用 add() remove() 和 update()。我们不使用 set() push() 对吗? @Anant
    • @Anant 我正在为显式同步而苦苦挣扎,尤其是这件作品$scope.items = angularFireCollection(url); ...这会返回一个集合但是,我的模型$scope.items 是一个数组...我该如何处理有这个对象吗?
    猜你喜欢
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2016-12-16
    • 2015-08-18
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多