我正在使用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来禁用拉取更新?
答案 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?