javascript - 简写 if 语句总是返回 true

标签 javascript angularjs

我有一个列出组的下拉菜单。每个组都包含一个属性( bool 值),用于确定组所有者是用户还是另一个组

如果组所有者是用户,我将获取组所有者 ID 并将其与一组用户进行比较以确定哪个用户与该 ID 匹配并将该用户设置为 selectedOwner。但是,如果组所有者是一个组,我将尝试遍历所有组以找到匹配项并将该组设置为 selectedOwner

这是我的 Controller 函数:

$scope.groupOwner = function (){
    var temp = $scope.selectedGroup.ownerIsUser ? $scope.users : $scope.groups;
    var index = temp.length; 
    console.dir(temp);
    while(index--){
        if($scope.selectedGroup.owner === temp[index].id){
            $scope.selectedOwner = temp[index];
            console.log($scope.selectedOwner);
            break;
        };
    };      
};

每当更改下拉列表时,它都会调用 groupOwner,它会检查 selectedUser.ownerIsUser 属性以确定我应该查看哪个数组,users

但是,无论 selectedGroup owner 属性设置为什么,temp 变量始终返回 true。

这是对象的样子:

User = { 
name: Demo Administrator,
id: 90,
domain: i:0#.w|itun\demoadmin_compulite,
email: ,
isAdmin: False
 }

selectedGroup =  { 
name: Test Group,
id: 10,
description: ,
owner: 88,
ownerIsUser: False
 }

HTML:

<div class="topRow">
    <label for="entityDropDown">Select a Group:</label>
    <select id="entityDropDown" ng-model="selectedGroup" ng-options="group as group.name for group in groups" ng-change="getGroupInfo(selectedGroup)"></select>
    <div class="delGroupBtn"><a>&#10006;</a>

    </div>
</div>

对象的控制台输出:

Object {name: "Test Group 4", id: "117", description: "", owner: "71", ownerIsUser: "False"…}
description: ""
id: "117"
name: "Test Group 4"
owner: "71"
ownerIsUser: "False"
__proto__: Object

已解决:

$scope.groupOwner = function (){
    //object stores string not booleans
    var isUser = $scope.selectedGroup.ownerIsUser === "True"? true : false;  
    var owner = isUser ? $scope.user : $scope.group;
    var index = owner.length; 
    console.dir(owner);
    while(index--){
        if($scope.selectedGroup.owner === owner[index].id){
            $scope.selectedOwner = owner[index];
            console.log($scope.selectedOwner);
            break;
        };
    };      
};

最佳答案

您的变量是“False”而不是 bool 值 false。“False”是一个字符串,它始终评估为 true。

var temp = $scope.selectedGroup.ownerIsUser ? $scope.users : $scope.groups;

将始终设置 temp = $scope.users

一些 javascript 控制台测试示例:

> a = "False"
> "False"
> b = false
> false
> testValue = a ? 1 : 2;
> 1
> testValue = b ? 1 : 2;
2

关于javascript - 简写 if 语句总是返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21473329/

相关文章:

javascript - 显示图像 onclick 工作正常,但如何在再次单击时隐藏它

javascript - double 组中的求和函数

javascript - 读取 mongoose 中没有子字段属性的文档子字段会返回一个空对象

javascript - 无法使用 Protractor 中的 html 屏幕截图生成报告

javascript - 导航栏的 AngularJS 事件类不起作用

javascript - 双击 Angular 编辑带有对象数组的表

javascript - 无需克隆即可拖放 div

javascript - Angular + Python post 字符串和 json

javascript - angularjs - 计算日期加一天

angularjs - 如何在 Protractor 导航到第 3 方页面时验证使用您的 Google 帐户登录?