【问题标题】:Thinkster.io angular chapter 6 error - auth.logout() not workingThinkster.io 角度第 6 章错误 - auth.logout() 不起作用
【发布时间】:2014-04-28 06:30:16
【问题描述】:

如果看过 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;

});

【问题讨论】:

  • 您如何确定它不起作用?我们可以尝试验证的错误或条件是什么?
  • 见下面丹尼尔的回答。这为我解决了。

标签: angularjs firebase


【解决方案1】:

由于我自己遇到了这个问题并检查了 GitHub 问题,所以这就是你需要做的。

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

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

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

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

由于您的登录方法返回一个承诺,因此您可以在用户登录后做任何您想做的事情。

【讨论】:

  • 是的,就好像他们甚至没有测试过应用程序一样。这是一个很好的教程,因为它涵盖了很多内容,但我在第 3 节中发现了本教程的至少一个其他主要问题stackoverflow.com/questions/24577840/…
【解决方案2】:

ng-show 的内容是一个针对范围求值的表达式。它不应该用单引号引起来,否则你只是给它一个非假或真值(不是未定义、空或 0)。由于 signedIn 是服务的一种方法,因此您必须通过控制器范围公开该方法,或者在控制器范围内创建一个处理工作的函数。

【讨论】:

    猜你喜欢
    • 2014-10-27
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2019-02-14
    相关资源
    最近更新 更多