我有一个导航栏,其中有一个调用Log Out
功能的下拉菜单项ngPostLogOut()
。
.when("/logout", {
controller: 'AuthController',
templateUrl: "client/html/auth/logout.html"
});
$scope.ngPOSTLogOut = function() {
if ($rootScope.user) {
$rootScope.user = null;
}
if ($window.sessionStorage) {
$window.sessionStorage.clear();
alert('Entered..');
}
alert('Before HTTP');
$http.post('server/auth/logout.php')
.then(function(result) {
$scope.logout = result.data;
});
alert('After HTTP');
/*
$timeout(function() {
$location.path('/');
}, 10000);
*/
};
<div ng-controller="AuthController as auth">
<p ng-show='user == null' class="text-center">{{logout}}</p>
<br>
<button ng-click='ngPOSTLogOut()' class="btn btn-default btn-block">Angular To PHP</button>
现在,如果某人从导航栏的下拉列表中单击Log Out
项,则会调用该函数。我知道这是因为我已设置警报并且它们会弹出。但是,login.php中的'echo'没有得到推荐。但是,奇怪的是,如果我按下同时调用Angular to PHP
函数的ngPostLogOut()
按钮,该功能将完全按照预期完成。
我的猜测是ngRoute
迫使Angular优先处理HTML模板切换,以便ngPOSTLogOut()
函数的参数被忽略或解除。
答案 0 :(得分:0)
改变这个:
<li ng-click='ngPOSTLogOut()' ng-show='user != null'><a href="#logout">Log Out</a></li>
到此:
<li ng-show="user != null"><a ng-click="ngPOSTLogOut()">Log Out</a></li>
考虑使用ng-if而不是ng-show。