AngularJS需要执行两次函数才能显示结果

时间:2016-07-27 09:09:17

标签: javascript html angularjs ngroute

我有一个导航栏,其中有一个调用Log Out功能的下拉菜单项ngPostLogOut()

在app.js

.when("/logout", {
        controller: 'AuthController',
        templateUrl: "client/html/auth/logout.html"
    });

AuthController

$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);
    */
};

logout.html

<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()函数的参数被忽略或解除。

GitHub上的整个项目

https://github.com/AquaSolid/RAMA_Angular_PHP

1 个答案:

答案 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。