函数不会在角度中使用锚标记调用

时间:2016-01-09 18:45:01

标签: javascript angularjs

无法在登录控制器内调用注销功能。我使用ui-router进行简单的登录和注销功能。

我可以登录并路由到其他页面,但我无法调用logout功能。我已经尝试了所有可能的解决方案,例如使用:

<li><a href ng-click="$event.preventDefault();logout()">Logout</a></li>     //only href 

<li><a href="" ng-click="$event.preventDefault();logout()">Logout</a></li> //empty href

<li><a href ng-click="$event.preventDefault();logout()">Logout</a></li>   //href with event

button class="btn" ng-click="logout()">Logout</button>                   //also button type

但是,以上都没有解除注销功能。我猜范围或stateprovider有问题。

Stateprovider:

myApp.config(function ($stateProvider, $urlRouterProvider) {

// default route
$urlRouterProvider.otherwise("/Home");

// ui router states
$stateProvider
    .state('Home', {
        url: "/Home",
        views: {
            content: {
                templateUrl: 'views/HomePage.html',
                controller: function ($scope) {
                }
            }
        }
    })
    .state('LoggedIn', {
        url: "/LoggedIn",
        views: {
            'content': {
                templateUrl: 'views/LoggedIn.html',
                controller: function ($scope) {
                }
            }
        }
    });
});

登录控制器:

myApp.controller('loginController', ['$scope', '$http', 'jwtHelper', '$localStorage', '$sessionStorage', '$state', '$window', function ($scope, $http, jwtHelper, $localStorage, $sessionStorage, $state, $window)
{
    $scope.loginForm = function (email, password) {
        if (email !== undefined && password !== undefined) {
            $http.post('rs/loginResource/login', {email: email, password: password})
                    .then(function (data) {
                        $localStorage.token = data.token;
                        $state.go('LoggedIn');
                        console.log(data.data.token);
                    })
                    .catch(function (error) {
                        console.log(error);
                    });
        }

        $scope.logout = function () {
            alert("logout called"); //it is not firing the alert here
            delete $localStorage.token;
            $state.go('Home');
        };
    };
}]);

索引html:

<boyd>
    <div id="wrap">         
        <div ui-view="content"></div>
    </div>
</body>

主要HTML:

<div ng-controller="loginController">
    <form class="form" method="post" ng-submit="loginForm(email, password)">
        <div class="form-group">
            <label class="sr-only">Email address</label>
            <input type="email" ng-model="email" required>
        </div>
        <div class="form-group">
            <label>Password</label>
            <input type="password" ng-model="password">
        </div>
        <div class="form-group">
            <button type="submit">Sign in</button>
        </div>
    </form>
</div>

LoggedIn html:

<div ng-app="myApp">
    <nav>
        <div class="container">
            <div ng-controller="loginController">
                <ul>
                    <li><a href ng-click="logout()">Logout</a></li>
                </ul>
            </div>
        </div>
    </nav>
    <h2>Logged In....</h2>
</div>

1 个答案:

答案 0 :(得分:0)

注销功能似乎在loginForm函数