这是我的自定义控制器我写的 logout()
功能在这里工作正常
我的问题是我想在我的全局菜单页面中使用
如何实现这一目标?
TodoController.js
app.controller('TodoController', function($state,$http,$rootScope, $scope,$auth) {
$scope.logout = function() {
$auth.logout().then(function() {
localStorage.removeItem('user');
$rootScope.authenticated = false;
$rootScope.currentUser = null;
});
}
$scope.init();
});
menu.html
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="javascript:void(0)">Logo</a>
</div>
<ul class="nav navbar-nav">
<li><a href="/#/url">Menu 1</a></li>
<li><a href="/#/url3">Menu 2</a></li>
<li><a href="/#/url2">Menu 2</a></li>
<li><a href="/#/url1">Menu 2</a></li>
</ul>
</div>
</nav>
答案 0 :(得分:0)
以与创建MenuController
相同的方式创建TodoController
,并在其中添加logout()
方法。确保在菜单的HTML上设置MenuController
,以便它可以访问该方法。
答案 1 :(得分:0)
integer
答案 2 :(得分:0)
一种选择是在您的主应用程序中定义您的退出功能。模块的运行块。运行块有点像AngularJs的主要方法。在运行块中,您可以将注销功能附加到$rootScope
,如@Bimlendu Kumar的回答中所述。
var app = angular.module('app', [])
.run(['$auth', '$rootScope', '$window'
function($auth, $rootScope, $window) {
$rootScope.logout = function() {
$auth.logout().then(function() {
$window.localStorage.removeItem('user');
$rootScope.authenticated = false;
$rootScope.currentUser = null;
});
}
}
然后在menu.html中你只需在ng-click属性中添加函数调用。
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="javascript:void(0)">Logo</a>
</div>
<ul class="nav navbar-nav">
<li><a href="/#/url">Menu 1</a></li>
<li><a href="/#/url3">Menu 2</a></li>
<li><a href="/#/url2">Menu 2</a></li>
<li><a href="/#/url1">Menu 2</a></li>
<li><a href="#" ng-click="logout()">Logout</a></li>
</ul>
</div>
</nav>
有关运行块的更多信息:https://docs.angularjs.org/guide/module