angularjs - Thinkster.io Angular 第 6 章错误 - auth.logout() 不起作用

标签 angularjs firebase

如果看过 thinkster.io augularjs 教程的人会熟悉下面的代码。我面临以下错误。

<ul class="nav navbar-nav navbar-right" ng-show="signedIn()">
    <li>
        <a href="#" ng-click="logout()">Logout</a>
    </li>
</ul>

首先,注销按钮没有显示。添加单引号后,它出现了

<ul class="nav navbar-nav navbar-right" ng-show="'signedIn()'">

但是当我单击注销时,用户并未注销。

nav.js代码

app.controller('NavCtrl', function ($scope, $location, Post, Auth) {
    $scope.post = {url: 'http://', title: ''};

    $scope.submitPost = function () {
      Post.create($scope.post).then(function (ref) {
        $location.path('/posts/' + ref.name());
        $scope.post = {url: 'http://', title: ''};
      });
    };

    $scope.logout = function () {
      Auth.logout();
    };

});

services/auth.js 代码

app.factory('Auth', function($firebaseSimpleLogin, FIREBASE_URL, $rootScope){
    var ref = new Firebase(FIREBASE_URL);

var auth = $firebaseSimpleLogin(ref);

var Auth = {
    register: function(user){
        return auth.$createUser(user.email, user.password);
    },
    signedIn: function(){
        return auth.user !== null;
    },
    logout: function(){
        auth.$logout();
    }

};
$rootScope.signedIn = function(){
    return Auth.signedIn();
};
return Auth;

} );

最佳答案

由于我自己遇到了这个问题并检查了 GitHub 问题,因此您需要执行以下操作。

在您的 Auth 服务上创建一个 login 方法,如下所示:

login: function(user) {
    return auth.$login('password', user);
}

在您的身份验证 Controller 中,您需要在注册后登录,如下所示:

Auth.register($scope.user).then(function (authUser) {
    Auth.login($scope.user); // user is now logged in
});

由于您的登录方法返回一个 promise ,因此您可以在用户登录后执行任何您喜欢的操作。

关于angularjs - Thinkster.io Angular 第 6 章错误 - auth.logout() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23334003/

相关文章:

javascript - 仅当表单脏时才显示添加按钮

php - 当自定义 http header 设置为 post 请求时,Laravel Input::get ('params.id' ) 不起作用

文档中的 Angular FireStore 集合

ios - Firebase Swift iOS 取回图像时的图像缓存问题

ios - Swift 3 将 Firebase 数据写入 TableView

swift - 如何在嵌套的 Firebase 异步 observeSingleEvent() 方法 Swift 中使用 DispatchGroup?

javascript - angularjs从ng-repeat获取一个对象到不同页面中的 Controller

javascript - 无法在 Angular 上删除

java - 在这种情况下发送到 Firebase 时如何压缩图像?

css - 为什么文件上传按钮找不到它的 CSS 样式