如何禁用 firebase 3 向数据绑定

How to disable firebase 3-way data binding

我正在使用 angularJS 1.3 与 angularfire 和 firebase。

我确实创建了一些封装 firebase 对象的工厂,而且效果很好。 3 种方式的数据绑定真的很酷。

我计划使用 firebase 构建一个大型应用程序以实现数据持久性,但我面临着一个大问题:

在我的商业模式中,我想要一些 models/collections 支持 3 向数据绑定,但我希望其他集合不实时更新。

一些访问生成网站的客户在看到网站内容实时更新时可能会感到害怕 - 我不希望这样。 想象一下,你正在阅读一篇文章,不知何故又长又复杂,你把注意力放在一个你理解有问题的段落上,突然,这个段落消失了,取而代之的是一个新的段落。现在假设您对 Web 开发一无所知。您可能会开始考虑咨询一些有关您心理健康的专业人士,或者认为您的计算机被黑了。谁知道!

所以我想禁用本文的 3 种方式数据绑定,并避免这种边界线客户端 phone 调用。我找到的唯一解决方案是不使用 fireangular,而是使用 beyond angularfire documentation section,并删除以下行:

ref.on("value", function(snapshot) {
   $timeout(function() {
     $scope.data = snapshot.val();
   });
});  

这会解决问题,但是在我的管理界面中,我必须实现第二个工厂,以便管理员用户可以访问文章的 3 种方式数据绑定 - 这不是很干。

在我的文章控制器中,我必须写这样的东西:

$scope.loadArticle = function(){
   if(UserService.type === 'admin'){
       AdminArticleFactory.get(id);
   }
   else{
       ArticleFactory.get(id);
   }
}

是否有任何其他设置 firebase 以禁用拉取更新的方法?

是的,这也是我 运行 喜欢的。有时你会用 Firebase 重复自己。存储数据时也是如此。我建议只做一个函数来保存你不想立即更新的数据。

<button ng-click="saveChanges">save</button>

在控制器中

$scope.saveChanges = function () {
var obj = $firebaseObject(ref);
obj.foo = "bar";
obj.$save().then(function(ref) {
  ref.key() === obj.$id; // true
}, function(error) {
  console.log("Error:", error);
});
}

编辑

要取消同步 firebase object/array,您可以遵循以下答案:How to disassociate angularFire bound object?