Angularjs 将false设置为范围变量不会';从工厂设置时,机器无法工作
我有一个导航下拉列表,我想根据工厂的值隐藏下拉列表中的一些选项。我正在使用Angularjs 将false设置为范围变量不会';从工厂设置时,机器无法工作,angularjs,Angularjs,我有一个导航下拉列表,我想根据工厂的值隐藏下拉列表中的一些选项。我正在使用ng show根据出厂值隐藏或显示的选项 当我在没有工厂的情况下直接将其设置为false时,它会工作,并且在下拉列表中看不到这些选项 以下是我从工厂获取数据的方式: $scope.mstrClientLStatus=userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus; console.log($scope.mstrClientLStatus)
ng show
根据出厂值隐藏或显示的选项
当我在没有工厂的情况下直接将其设置为false时,它会工作,并且在下拉列表中看不到这些选项
以下是我从工厂获取数据的方式:
$scope.mstrClientLStatus=userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus;
console.log($scope.mstrClientLStatus)
//it is false but doesn't hide
当我直接将上述设置为false
时,选项被隐藏
$scope.mstrClientLStatus= false //works and the options are hidden
Iconsole.log
下一行中的$scope.mstrClientLStatus
,它为false,但仍在下拉列表中显示选项
html:
<li ng-show="mstrClientLStatus"> //this is what I want to hide
这很奇怪,假设您正在控制器中编写代码,可能是摘要周期的问题,您只需将操作放在超时块中,以使其在摘要周期中注册
$timeout(function() {
$scope.mstrClientLStatus = userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus;
$scope.$apply()
})
这很奇怪,假设您正在控制器中编写代码,可能是摘要周期的问题,您只需将操作放在超时块中,以使其在摘要周期中注册
$timeout(function() {
$scope.mstrClientLStatus = userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus;
$scope.$apply()
})
我的同事提出了这一建议,尽管这是一个解决办法,但还是奏效了。我认为:
if(userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus=="true"){
$scope.mstrClientLStatus= true;
}
我的同事提出了这一建议,尽管这是一个解决办法,但还是奏效了。我认为:
if(userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus=="true"){
$scope.mstrClientLStatus= true;
}
在“`$scope.mstrClientLStatus=userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus”的底部尝试
$scope.$apply()
`我得到这个错误https://docs.angularjs.org/error/$rootScope/inprog?p0=$digest
你能发布你工厂的代码片段吗?@Siddharth。在“`$scope.mstrClientLStatus=userDetailsFactory.getUserDetailsFromFactory().mstrClientLStatus”的底部发布ittry$scope.$apply()
`我得到这个错误https://docs.angularjs.org/error/$rootScope/inprog?p0=$digest
你能发布你工厂的代码片段吗?@Siddharth。我已经发布了一个解决方案,虽然有效,但并不完全正确。你能把它看得很好吗,10/10我发布了一个解决方案,它可以工作,但并不真正正确。你能把它看得很好吗,10/10看。@georgeawg。我认为ng show
认为和false都是false
只有空字符串“
是false。字符串“false”
和“true”
都是真实的。事实上,任何长度大于零的字符串都是真实的。这是JavaScript的一个怪癖。有关详细信息,请参阅和。请参阅。@georgeawg。我认为ng show
认为和false都是false
只有空字符串“
是false。字符串“false”
和“true”
都是真实的。事实上,任何长度大于零的字符串都是真实的。这是JavaScript的一个怪癖。有关详细信息,请参阅和。