视图中的布尔值为true,但在控制器中为false angularJS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视图中的布尔值为true,但在控制器中为false angularJS相关的知识,希望对你有一定的参考价值。
在父作用域(包装整个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>
鉴于我使用此条件的控制器显示为true。
所以
<div ng-controller="ctrl">
<p>{{$parent.authentication.isAuth}}</p>
</div>
在段落中显示true,在名为ctrl
的控制器中显示这个条件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
假和“假”字符串。
当您设置值async($localForage.getItem('authorization').then ...)
,它将是第一个false
,然后它可能在异步操作完成后设置为true
。您的视图相应地更新值 - 每次更改 - 这就是为什么你说它在视图中显示true
那将是第一个false
,几毫秒后将变为true
。你不一定会看到它,但它仍然会发生.console.log
在异步变化发生之前运行,并且由于if > else
只运行一次,它只会在变量设置为true
之前记录变量的状态。
以上是关于视图中的布尔值为true,但在控制器中为false angularJS的主要内容,如果未能解决你的问题,请参考以下文章
在Python中什么样的对象布尔(bool)值为False,什么样的对象布尔(bool)值为True可以用内置函数bool()判断对象的布尔值