AngularJS登录注销按钮需要刷新才能更改

时间:2016-11-17 12:20:40

标签: angularjs

这是我的index.html



<!DOCTYPE HTML>
<html>

<head>
    <title>Koupon - Index</title>
    <!-- meta info -->
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <meta name="keywords" content="Koupon HTML5 Template" />
    <meta name="description" content="Koupon - Premiun HTML5 Template for Coupons Website">
    <meta name="author" content="Dark Cyber" >
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Google fonts -->
    <!-- <link href='http://fonts.googleapis.com/css?family=Open+Sans:400italic,400,600' rel='stylesheet' type='text/css'> -->
    <!-- <link href='http://fonts.googleapis.com/css?family=Lato:400,700' rel='stylesheet' type='text/css'> -->
    <!-- Bootstrap styles -->
    <link rel="stylesheet" href="css/boostrap.css">
    <link rel="stylesheet" href="css/boostrap_responsive.css">
    <!-- Font Awesome styles (icons) -->
    <link rel="stylesheet" href="css/font_awesome.css">
    <!-- Main Template styles -->
    <link rel="stylesheet" href="css/styles.css">

    <!-- IE 8 Fallback -->
    <!--[if lt IE 9]>
	<link rel="stylesheet" type="text/css" href="css/ie.css" />
<![endif]-->

    <!-- Your custom styles (blank file) -->
    <link rel="stylesheet" href="css/mystyles.css">
</head>

<body ng-app="rentalkika">





    <!-- //////////////////////////////////
//////////////MAIN HEADER///////////// 
////////////////////////////////////-->
    <header class="main">
        <div class="container">
            <div class="row">
                <div class="span2">
                    <a href="index.html">
                        <img src="img/logo-small.png" alt="logo" title="logo" class="logo">
                    </a>
                </div>
                <div class="span8">
                    <!-- MAIN NAVIGATION -->
                    <div class="flexnav-menu-button" id="flexnav-menu-button">Menu</div>
                    <nav>
                        <ul class="nav nav-pills flexnav" id="flexnav" data-breakpoint="800">
                            <li class="active"><a href="index.html">Home</a>
                            </li>
                            <li><a href="#">Layanan</a>
                                <ul>
                                    <li><a href="#sewa_mobil">Sewa Mobil</a>
                                    </li>
                                    <li><a href="#">Shuttle</a>
                                    </li>
                                </ul>
                            </li>
                            <li><a href="features-typography.html">Paket Wisata</a>
                            </li>
                            <li><a href="blog-sidebar-right.html">Blog</a>
                            </li>
   								 <li><a href="#">FAQ</a>
                            </li>
                            <li><a href="#">Tertarik menjadi mitra kami?</a></li>
                            <li><a href="#contact">Contact</a>
                            </li>
                        </ul>
                    </nav>
                    <!-- END MAIN NAVIGATION -->
                </div>
                <div class="span2">
                    <!-- LOGIN REGISTER LINKS -->
                    <ul class="login-register" ng-controller="LoginController">
                    
                        <li ng-show="!isLoggedIn"><a class="popup-text" href="#login-dialog" data-effect="mfp-move-from-top"><i class="icon-signin"></i>Sign in</a>
                        </li>
                        <li ng-show="isLoggedIn"><a class="popup-text" href="#" ng-click="logout()"><i class="icon-signout"></i>Sign out</a>
                        </li>
                        
                        <li><a href="#register"><i class="icon-edit"></i>Sign up</a>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </header>

    <!-- LOGIN REGISTER LINKS CONTENT -->
    <div id="login-dialog" class="mfp-with-anim mfp-hide mfp-dialog clearfix">
        <i class="icon-signin dialog-icon"></i>
        <h3>Member Login</h3>
        <h5>Welcome back, friend. Login to get started</h5>
        <div class="row-fluid">
            <form class="dialog-form" ng-submit="handleLogin()" ng-controller="LoginController">
                <label>Username</label>
                <input type="text" placeholder="yourUsername" ng-model="login.username" class="span12">
                <label>Password</label>
                <input type="password" placeholder="My secret password" ng-model="login.password" class="span12">
                <label class="checkbox">
                    <input type="checkbox">Remember me
                </label>
                <div class="control-group error" ng-show="error">
                <span class="error help-block">
                	{{ error }}
                </span>
                </div>
                <input type="submit" value="Sign in" class="btn btn-primary">
            </form>
        </div>
        <ul class="dialog-alt-links">
            <li><a class="popup-text" href="#register-dialog" data-effect="mfp-zoom-out">Not member yet</a>
            </li>
            <li><a class="popup-text" href="#password-recover-dialog" data-effect="mfp-zoom-out">Forgot password</a>
            </li>
        </ul>
    </div>

    <div id="password-recover-dialog" class="mfp-with-anim mfp-hide mfp-dialog clearfix">
        <i class="icon-retweet dialog-icon"></i>
        <h3>Password Recovery</h3>
        <h5>Fortgot your password? Don't worry we can deal with it</h5>
        <div class="row-fluid">
            <form class="dialog-form">
                <label>E-mail</label>
                <input type="text" placeholder="email@domain.com" class="span12">
                <input type="submit" value="Request new password" class="btn btn-primary">
            </form>
        </div>
    </div>
    <!-- END LOGIN REGISTER LINKS CONTENT -->
    
    <!-- //////////////////////////////////
//////////////END MAIN HEADER////////// 
////////////////////////////////////-->


<!-- //// START PAGE CONTENT -->

	<div ng-view>
    
   </div>

<!-- END PAGE CONTENT /// -->



    <!-- //////////////////////////////////
//////////////MAIN FOOTER////////////// 
////////////////////////////////////-->

    <footer class="main">
        <div class="footer-top-area">
            <div class="container">
                <div class="row row-wrap">
                    <div class="span3">
                        <a href="index.html">
                            <img src="img/logo.png" alt="logo" title="logo" class="logo">
                        </a>
                    </div>
                    <div class="span3">
                        <h5>Get it Anywhere</h5>
                        <p>Ultrices varius semper laoreet molestie purus euismod fames odio volutpat eleifend turpis nec cras quam litora dignissim curae lacus platea sociis mauris hendrerit sed fringilla dignissim cum mi amet orci</p>
                        <ul class="list list-app-download">
                            <li>
                                <a href="#" class="icon-windows box-icon" title="Get Windows Phone App" data-toggle="tooltip"></a>
                            </li>
                            <li>
                                <a href="#" class="icon-apple box-icon" title="Get iPhone App" data-toggle="tooltip"></a>
                            </li>
                            <li>
                                <a href="#" class="icon-android box-icon" title="Get Android App" data-toggle="tooltip"></a>
                            </li>
                        </ul>
                    </div>
                    <div class="span3">
                        <h5>Koupon on Twitter</h5>
                        <!-- START TWITTER -->
                        <div class="twitter-ticker" id="twitter-ticker"></div>
                        <!-- END TWITTER -->
                    </div>
                    <div class="span3">
                        <h5>Recent News</h5>
                        <ul class="list post-list">
                            <li class="post-thumb">
                                <h5 class="title"><a href="#">Gravida porttitor vulputate</a></h5><small>05 August, 2013</small>
                                <p class="post-desciption">Dignissim phasellus magnis mus duis nisl ut lacus vehicula velit</p>
                            </li>
                            <li class="post-thumb">
                                <h5 class="title"><a href="#">A duis</a></h5><small>29 July, 2013</small>
                                <p class="post-desciption">Class augue curae accumsan tempor semper id integer adipiscing mattis</p>
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
        <div class="container">
            <div class="row row-wrap">
                <div class="span3">
                    <h5>About Koupon</h5>
                    <p>Tellus auctor sem sociosqu cras cursus vitae erat aliquam adipiscing iaculis suscipit curabitur hac hac congue netus integer ridiculus volutpat varius suspendisse velit venenatis facilisi velit quis volutpat enim ipsum</p>
                </div>
                <div class="span2">
                    <h5>Company</h5>
                    <ul class="list">
                        <li><a href="#">Home</a>
                        </li>
                        <li><a href="#">Blog</a>
                        </li>
                        <li><a href="#">Press</a>
                        </li>
                        <li><a href="#">Jobs</a>
                        </li>
                        <li><a href="#">Investors</a>
                        </li>
                    </ul>
                </div>
                <div class="span2">
                    <h5>For Business</h5>
                    <ul class="list">
                        <li><a href="#">Advertising</a>
                        </li>
                        <li><a href="#">Runnig a Deal</a>
                        </li>
                        <li><a href="#">Accept Payments</a>
                        </li>
                        <li><a href="#">Referral Program</a>
                        </li>
                        <li><a href="#">Developers/API</a>
                        </li>
                        <li><a href="#">Merchant Terms</a>
                        </li>
                    </ul>
                </div>
                <div class="span2">
                    <h5>Get Help</h5>
                    <ul class="list">
                        <li><a href="#">FAQ</a>
                        </li>
                        <li><a href="#">Customer Support</a>
                        </li>
                        <li><a href="#">Return Policy</a>
                        </li>
                        <li><a href="#">Terms Of Use</a>
                        </li>
                        <li><a href="#">Privacy Statement</a>
                        </li>
                    </ul>
                </div>
                <div class="span3">
                    <h5>Keep in touch</h5>
                    <p>Mauris mus tortor leo augue non sociosqu ridiculus sagittis odio</p>
                    <ul class="list list-social">
                        <li>
                            <a href="#" class="icon-facebook box-icon" data-toggle="tooltip" title="Facebook"></a>
                        </li>
                        <li>
                            <a href="#" class="icon-twitter box-icon" data-toggle="tooltip" title="Twitter"></a>
                        </li>
                        <li>
                            <a href="#" class="icon-flickr box-icon" data-toggle="tooltip" title="Flickr"></a>
                        </li>
                        <li>
                            <a href="#" class="icon-linkedin box-icon" data-toggle="tooltip" title="Linkedin"></a>
                        </li>
                        <li>
                            <a href="#" class="icon-tumblr box-icon" data-toggle="tooltip" title="Tumblr"></a>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </footer>
    <!-- //////////////////////////////////
//////////////END MAIN  FOOTER///////// 
////////////////////////////////////-->

    <!-- Scripts queries -->
    <script src="js/jquery.js"></script>
    <script src="js/boostrap.min.js"></script>
    <script src="js/nivo_slider.min.js"></script>
    <script src="js/countdown.min.js"></script>
    <script src="js/flexnav.min.js"></script>
    <script src="js/magnific.min.js"></script>
    <script src="js/tweet.min.js"></script>
	    
	 <!--   
    <script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
    -->
    
    <script src="js/gmap3.min.js"></script>
    <script src="js/wilto_slider.min.js"></script>
    <script src="js/mediaelement.min.js"></script>
    <script src="js/fitvids.min.js"></script>
    <script src="js/mail.min.js"></script>
	 <script src="js/angular.min.js"></script>
	 <script src="js/angular-route.js"></script>
	 <script src="js/app.js"></script>

	 
    <!-- Custom scripts -->
    <script src="js/custom.js"></script>

</body>

</html>
&#13;
&#13;
&#13;

我在登录对话框和登录链接中定义了2个LoginController

这是我的app.js

&#13;
&#13;
........
........

   
rentalkika.controller('LoginController', function ($rootScope, $scope, $http, $location, sessionService){
$scope.login = { username: "", password: "" };
if(sessionService.get('sessionToken') != null){
$scope.isLoggedIn = true;	
}else {
$scope.isLoggedIn = false;
}

$scope.handleLogin = function () {
	
	//authService.login($scope);
	
	
	var configLogin = {
		params: {
			username: $scope.login.username,
			password: $scope.login.password		
		},
		headers: {
			'X-Parse-Application-Id' : 'xxxx',
			'Content-Type' : 'application/x-www-form-urlencoded'
			
		}
	}

	$http.get('http://128.199.249.233:1337/parse/login', configLogin).then(function (response) {
		console.log(response.data);
		$.magnificPopup.close();
		sessionService.set('isLoggedIn', 'yes');
		sessionService.set('role', response.data.role_name);
		sessionService.set('sessionToken', response.data.sessionToken);
		$scope.isLoggedIn = true;	
		$location.path('/dashboard');
	}, function (error){
		$scope.error = error.data.error;
	});
	
	
}

$scope.logout = function () {
	sessionService.destroy('isLoggedIn');	
	sessionService.destroy('role');	
	sessionService.destroy('sessionToken');
	$scope.isLoggedIn = false;
	
}


});

rentalkika.factory('sessionService', function () {

var sessionService = {};

sessionService.set = function (key, value) {
	return sessionStorage.setItem(key, value);
};

sessionService.get = function (key) {
	return sessionStorage.getItem(key);
};
	
sessionService.destroy = function (key) {
	return sessionStorage.removeItem(key);
};	

return sessionService;

});
&#13;
&#13;
&#13;

我想要的是当我成功提交登录时,登录按钮将更改为退出按钮,反之亦然,当我成功点击退出按钮时。

我的问题是刷新浏览器后按钮登录会更改为退出。

我的代码遗漏或错误了吗?

1 个答案:

答案 0 :(得分:0)

您可以定义两个HTML元素并使用角度ng-show根据变量显示每个元素。例如hasNotsignedIn就像这样:

<input ng-show="hasNotsignedIn" type="submit" value="Sign in" class="btn btn-primary">

<input ng-show="!hasNotsignedIn" type="button" value="Sign out" class="btn btn-primary">

然后默认在控制器中设置变量$scope.hasNotsignedIn=true; 当您发布表单时,$scope.hasNotsignedIn=false; 点击退出按钮设置$scope.hasNotsignedIn=true;

然后就这样做

rentalkika.controller('LoginController', function ($rootScope, $scope, $http, $location, sessionService){
$scope.login = { username: "", password: "" };
$scope.hasNotsignedIn = true;  //Changeed
if(sessionService.get('sessionToken') != null){

}else {

}

$scope.handleLogin = function () {

    //authService.login($scope);


    var configLogin = {
        params: {
            username: $scope.login.username,
            password: $scope.login.password     
        },
        headers: {
            'X-Parse-Application-Id' : 'xxxx',
            'Content-Type' : 'application/x-www-form-urlencoded'

        }
    }

    $http.get('http://128.199.249.233:1337/parse/login', configLogin).then(function (response) {

        $scope.hasNotsignedIn = false; //changed


        console.log(response.data);
        $.magnificPopup.close();
        sessionService.set('isLoggedIn', 'yes');
        sessionService.set('role', response.data.role_name);
        sessionService.set('sessionToken', response.data.sessionToken);
        $scope.isLoggedIn = true;   
        $location.path('/dashboard');
    }, function (error){
        $scope.error = error.data.error;
    });


}

$scope.logout = function () {
    sessionService.destroy('isLoggedIn');   
    sessionService.destroy('role'); 
    sessionService.destroy('sessionToken');
    $scope.hasNotsignedIn = true;  //changed

}


});