如何禁用firebase 3向数据绑定

时间:2015-05-15 20:16:44

标签: angularjs firebase angularfire

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

我确实创建了一些封装firebase对象的工厂,它运行得很好。 3路数据绑定非常酷。

我打算使用firebase构建一个大型应用程序来保持数据,但我面临着一个大问题:

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

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

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

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

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

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

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

有没有其他方法可以设置firebase来禁用拉取更新?

1 个答案:

答案 0 :(得分:2)

是的,这也是我遇到的。有时您会使用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对象/数组,您可以按照以下答案操作: How to disassociate angularFire bound object?