Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS-ng如果在键未知时检查真值_Angularjs - Fatal编程技术网

AngularJS-ng如果在键未知时检查真值

AngularJS-ng如果在键未知时检查真值,angularjs,Angularjs,我想在AngularJS中应用ng if,这取决于JSON中的任何值是否为true。 第一级关键点总是相同的,但是第二级关键点总是不同的。(所以我不能做ng if=“known\u stuff.uncontractible\u thing”,因为“uncontractible\u thing”的名称每次都会不同。下面是JSON { "known_stuff": { "unpredictable_thing":false },

我想在AngularJS中应用
ng if
,这取决于JSON中的任何值是否为
true
。 第一级关键点总是相同的,但是第二级关键点总是不同的。(所以我不能做
ng if=“known\u stuff.uncontractible\u thing”
,因为
“uncontractible\u thing”
的名称每次都会不同。下面是JSON

{
    "known_stuff":
        {
            "unpredictable_thing":false
        },
    "known_stuff_2":
        {
            "non_predictable_stuff":true
        },
    "known_stuff_3":
        {
            "something_unknown":false
        }
} 

提前感谢!

如果您想检查提供的json中的任何值是否为真,那么

ng-if="known_stuff.unpredictable_thing == ture || 
        known_stuff_2.non_predictable_stuff == true ||
        known_stuff_3.something_unknown == true"

如果您想检查提供的json中的任何值是否为true,那么

ng-if="known_stuff.unpredictable_thing == ture || 
        known_stuff_2.non_predictable_stuff == true ||
        known_stuff_3.something_unknown == true"

如果我答对了你的问题,你的json将有相同的第一级键(
known_stuff
),但在
known_stuff
中可以有多个不同名称的键(比如这里的
unexpective_stuff

最简单的解决方案是迭代第一级键,获得如下所示的键值对

<div ng-repeat = "(key, val) in known_stuff" ng-if="known_stuff[key]">
    //do something --> {{key}} - {{val}}
</div>

//做点什么-->{{key}}-{{val}
支持Plunk->

-----------------------------------------------更新---------------------------------------------

将数据分配给jsonData

<div ng-repeat= "stuff in jsonData">
  <div ng-repeat = "(key, val) in stuff" ng-if="stuff[key]">
      //do something --> {{key}} - {{val}}
  </div>
</div>

//做点什么-->{{key}}-{{val}

另外,更新了相同的plunk。我希望这能回答您的问题。

如果我答对了您的问题,您的json将具有相同的第一级密钥(
known\u stuff
),但在
known\u stuff
中可以有多个具有不同名称的密钥(如这里的
unexpective\u stuff

最简单的解决方案是迭代第一级键,获得如下所示的键值对

<div ng-repeat = "(key, val) in known_stuff" ng-if="known_stuff[key]">
    //do something --> {{key}} - {{val}}
</div>

//做点什么-->{{key}}-{{val}
支持Plunk->

-----------------------------------------------更新---------------------------------------------

将数据分配给jsonData

<div ng-repeat= "stuff in jsonData">
  <div ng-repeat = "(key, val) in stuff" ng-if="stuff[key]">
      //do something --> {{key}} - {{val}}
  </div>
</div>

//做点什么-->{{key}}-{{val}
另外,更新了相同的plunk。我希望这能回答您的问题。

控制器:

$scope.check = function(someObject) {
    // return true if some value is true inside the object
    for (var key in someObject) {
        if (someObject[key] === true) {
            return true;
        }
    }
    return false;
};
模板:

ng-if="check(known_stuff)"
ng-if="checkData(data)"

如果数据是数组,则函数必须如下所示:

$scope.checkData = function(data) {
    for (var i = 0; i < data.length; i++) {
        for (var key1 in data[i]) {
            // return true if some value is true inside the object
            for (var key in data[i][key1]) {
                if (data[i][key1][key] === true) {
                    return true;
                }
            }
        }
    }
    return false;
};
控制器:

$scope.check = function(someObject) {
    // return true if some value is true inside the object
    for (var key in someObject) {
        if (someObject[key] === true) {
            return true;
        }
    }
    return false;
};
模板:

ng-if="check(known_stuff)"
ng-if="checkData(data)"

如果数据是数组,则函数必须如下所示:

$scope.checkData = function(data) {
    for (var i = 0; i < data.length; i++) {
        for (var key1 in data[i]) {
            // return true if some value is true inside the object
            for (var key in data[i][key1]) {
                if (data[i][key1][key] === true) {
                    return true;
                }
            }
        }
    }
    return false;
};


你怎么知道你自己要检查什么键?每个对象中只有一个键吗?它可以不止一个,我只想检查是否有任何第二级键具有真值。你怎么知道你自己要检查什么键?每个对象中只有一个键吗?它可以不止一个,我只想检查是否有任何第二级键具有真值这里的要点是,如果我只有一个一级密钥,这将起作用,但我有三个(已知的,已知的,已知的,已知的)使用ng repeat为第一层嵌套此调用。它会起作用。我只更新代码和相应的plunk以供参考。重点是,我想根据是否存在真键来显示/隐藏唯一元素。使用您的方法,如果两个第一级键有一个具有真值的第二级键,则会重复此元素。您可以检查叉形键。重点是,如果我只有一把一级键,这将起作用,但我有三把(已知的东西,已知的东西,已知的东西)使用ng repeat为第一层嵌套此调用。它会起作用。我只更新代码和相应的plunk以供参考。重点是,我想根据是否存在真键来显示/隐藏唯一元素。使用您的方法,如果两个第一级键有一个具有真值的第二级键,则会重复此元素。您可以检查forked plunkr重点是我事先不知道第二个键,所以JSON可以是“known_stuff.something_red”。我想知道如何在不知道第二个键的情况下检查里面的值是否为true。重点是我事先不知道第二个键,所以JSON可以是“known_stuff.something_red”。我想知道如何在不知道第二个键的情况下检查其中的任何值是否为真。我需要检查整个对象,而不仅仅是其中一个键。有关详细信息,请参阅plunkr:Your
data
实际上是代码中的一个数组,我看不到您如何处理此数组。您能用所需的代码扩展示例模板吗如何处理此数据数组?我只想检查$scope中是否有任何true元素。data为了显示/隐藏元素
唯一标头:我需要检查整个对象,而不仅仅是其中一个键。有关详细信息,请参阅plunkr:您的
数据
实际上是代码中的一个数组,我看不到您如何处理此数组。您能X使用此数据数组的代码来显示示例模板?我只想检查$scope.data中是否有任何true元素,以便显示/隐藏元素
唯一标头: