Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确解除$firebase AngularJS绑定的关联?_Angularjs_Firebase_Angularfire - Fatal编程技术网

如何正确解除$firebase AngularJS绑定的关联?

如何正确解除$firebase AngularJS绑定的关联?,angularjs,firebase,angularfire,Angularjs,Firebase,Angularfire,让图像说话:[25秒] 普朗克: Firebase GUI: 我使用的是Angular1.2.6,这是最新版本,AngularFire是最新版本 复制步骤 我有一个与Firebase同步的待办事项列表 我登录并将本地更改传播到Firebase 我注销并解除绑定关联,清除本地范围 我再次登录:奇怪的事情发生了,看到了吗 下面的关键代码片段包含了所有内容 1.控制器 注意,我存储了对unbind函数的引用,并在注销时调用它 2.服务 关于三向数据绑定的文档: 相关的: 我非常想知道如何正确地同步日志

让图像说话:[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";
        }
    }
}]);