【发布时间】:2017-12-25 21:56:21
【问题描述】:
在父范围(包含整个 webapp 的外部范围)中,如果您已登录,我会定义布尔变量。
$localForage.getItem('authorization')
.then(function(authData) {
if(authData) {
$scope.authentication.isAuth = true;
//token is added in http interceptor
} else {
$scope.authentication.isAuth = false;
}
}, function(){
console.log("error with getting authorization localForage after refresh");
}
);
它基本上工作正常。现在我可以使用ng-if="$parent.authentication.isAuth" 基于这个布尔值构建 UI。我也可以像<p>{{$parent.authentication.isAuth}}</p> 那样在视图中显示真/假,它也可以正常工作。
在一个控制器中,我想在不在视图中的控制器中使用这个布尔值。所以我做if($scope.authentication.isAuth){ 或if($scope.$parent.authentication.isAuth){(我都试过了),即使<p>{{$parent.authentication.isAuth}}</p> 在我使用这个条件的控制器的视图中显示为真,这种情况也会发生。
原来如此
<div ng-controller="ctrl">
<p>{{$parent.authentication.isAuth}}</p>
</div>
在段落中和名为ctrl 的控制器中显示true 此条件if($scope.authentication.isAuth){ 转到其他...为什么会有这种奇怪的行为?
if($scope.authentication.isAuth){
console.log($scope.authentication.isAuth);
console.log('true');
} else {
console.log($scope.authentication.isAuth);
console.log('false');
}
还有console.log false 和 "false" 字符串。
【问题讨论】:
-
else 中的代码真的很重要吗?好的。我编辑。
-
你在两个条件下打印相同的值,你怎么说它去else部分?
-
因为它控制台输出 false 不是 true
-
我试过了,它现在正在安慰假和“假”字符串,看看。
-
console.log(typeof $scope.authentication.isAuth);返回布尔值。