Firebase AngularFire隐式和显式同步之间的区别

时间:2013-05-24 11:30:10

标签: angularjs firebase angularfire

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

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

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

谢谢你

1 个答案:

答案 0 :(得分:19)

如果您想要隐式同步,请使用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(如角度指令,模块等),也可以使用此功能。希望这会有所帮助!