如何正确解除$firebase AngularJS绑定的关联?
让图像说话:[25秒] 普朗克: Firebase GUI: 我使用的是Angular1.2.6,这是最新版本,AngularFire是最新版本 复制步骤 我有一个与Firebase同步的待办事项列表 我登录并将本地更改传播到Firebase 我注销并解除绑定关联,清除本地范围 我再次登录:奇怪的事情发生了,看到了吗 下面的关键代码片段包含了所有内容 1.控制器 注意,我存储了对unbind函数的引用,并在注销时调用它 2.服务 关于三向数据绑定的文档: 相关的:如何正确解除$firebase AngularJS绑定的关联?,angularjs,firebase,angularfire,Angularjs,Firebase,Angularfire,让图像说话:[25秒] 普朗克: Firebase GUI: 我使用的是Angular1.2.6,这是最新版本,AngularFire是最新版本 复制步骤 我有一个与Firebase同步的待办事项列表 我登录并将本地更改传播到Firebase 我注销并解除绑定关联,清除本地范围 我再次登录:奇怪的事情发生了,看到了吗 下面的关键代码片段包含了所有内容 1.控制器 注意,我存储了对unbind函数的引用,并在注销时调用它 2.服务 关于三向数据绑定的文档: 相关的: 我非常想知道如何正确地同步日志
我非常想知道如何正确地同步日志记录和日志记录之间的集合。您可以考虑调用$Simult.FiReF.$OFF。我想解绑代码可能有一个单独的bug,我来看看。第一印象:$scope.firRef.$off就可以了!但愿我早点知道…:好的,这里最大的问题是混合了数据类型——对象和数组。在“注销”模式下,您使用的是数组,但常规表示是对象。不要这样做。在切换到仅使用对象后,AngularFire的合并算法仍然存在一个缺陷,即将“注销”时所做的更改与Firebase中已有的数据合并。我提交了一个问题来跟踪这个问题。感谢@Anant的澄清,我已经在github问题上添加了我的评论,所以我知道。关于数组和对象的使用,您建议如何解决?如果$scope.$firRef!=null{$scope.$firRef.$add$scope.newTodo;}其他{$scope.todos.push$scope.newTodo;}-可能是$scope.arrayNotLoggedIn和$scope.$firebaseLoggedIn?
$rootScope.$watch("loginState", function() {
$scope.loginState = $rootScope.loginState;
if ($scope.loginState == "loggedIn") {
$scope.$firRef = $firebase(new Firebase($scope.firebaseURL + "testuser/todos/"));
$scope.$firRef.$bind($scope, "todos").then(function(unbind) {
$scope.unbindFunction = unbind; // I store reference to unbinding function
});
} else if ($scope.loginState == "loggedOut") {
$scope.unbindFunction(); // and call it on logout
$scope.$firRef = null // doesn't help either
$scope.todos = [];
}
});
$scope.login = function() {
loginService.login();
}
$scope.logout = function() {
loginService.logout();
}
app.factory('loginService', ['$rootScope', function($rootScope) {
return {
login: function() {
$rootScope.loginState = "loggedIn";
},
logout: function() {
$rootScope.loginState = "loggedOut";
}
}
}]);