我有一個很奇怪的問題。我有一個if語句像下面這樣:Javascript布爾操作不起作用
$rootScope.changeView = function(view){
$location.path(view); // path not hash
};
$rootScope.$on('$routeChangeStart', function (event, next) {
console.log(next.requireLogin + " " + LoginService.getUserLoggedIn());
console.log(next.requireLogin && !LoginService.getUserLoggedIn());
if(next.requireLogin && !LoginService.getUserLoggedIn()) {
console.log("No access to panel: not logged in.");
alert("You need to be logged in as an administrator to see this page!");
event.preventDefault();
$timeout(function() {
$rootScope.changeView("/");
}, 500);
}
});
凡LoginServer.getUserLoggedIn和setUserLoggedIn此:
this.setUserLoggedIn = function(value){
sessionStorage.userIsLoggedIn = value;
};
this.getUserLoggedIn = function() {
return sessionStorage.userIsLoggedIn;
};
問題很簡單。即使在next.requireLogin爲true並且LoginService.getUserLoggedIn()爲false時也不會調用If語句。在控制檯輸出如下:
true false
false
因此很明顯!「next.requireLogin & & LoginService.getUserLoggedIn()」的計算結果爲假,但都是正確的價值觀?如果有幫助,在Chrome控制檯中,帶「false」的最後一行將突出顯示紫色。
有誰知道錯在哪裏?