我想在AngularJS中应用ng-if
,具体取决于JSON中的任何值是true
。
第一级键始终相同,但第二级键始终不同。 (所以我不能ng-if="known_stuff.unpredictable_thing"
,因为"unpredictable_thing"
的名称每次都会有所不同。这是JSON。
{
"known_stuff":
{
"unpredictable_thing":false
},
"known_stuff_2":
{
"non_predictable_stuff":true
},
"known_stuff_3":
{
"something_unknown":false
}
}
提前致谢!
答案 0 :(得分:1)
如果要检查提供的json中的任何值是否为真,那么
ng-if="known_stuff.unpredictable_thing == ture ||
known_stuff_2.non_predictable_stuff == true ||
known_stuff_3.something_unknown == true"
答案 1 :(得分:1)
控制器:
$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-show="check(known_stuff)"
如果您的数据是数组,则该函数必须如下所示:
$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-if="checkData(data)"
答案 2 :(得分:0)
如果我的问题是正确的,那么你的json将具有相同的第一级键(known_stuff
),但在know_stuff
内可以有多个具有不同名称的键(如unpredictable_thing
这里)
最简单的解决方案是迭代第一级密钥,获得如下所示的密钥值对。
<div ng-repeat = "(key, val) in known_stuff" ng-if="known_stuff[key]">
//do something --> {{key}} - {{val}}
</div>
支持Plunk - &gt; http://plnkr.co/edit/6hQQAtqRseb1gWvueFKr
----------------------------------------------- UPDATE ---------------------------------------------
为您的数据分配jsonData。
<div ng-repeat= "stuff in jsonData">
<div ng-repeat = "(key, val) in stuff" ng-if="stuff[key]">
//do something --> {{key}} - {{val}}
</div>
</div>
另外,更新了相同的插件。我希望这能回答你的问题。