Javascript 组合条件下的angularjs ng重复键值对
我想在键值对上使用一些特殊条件进行“ng repeat”。 我的json数据如下所示:Javascript 组合条件下的angularjs ng重复键值对,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我想在键值对上使用一些特殊条件进行“ng repeat”。 我的json数据如下所示: mylist = { "Tom Hans": true, "Carl King": true, "anotherfield": "Josef Bush" } 或: 我的两个键是如上所述的字符串格式,它们的值总是“true”,还有一个固定键“anotherfield”,它可以有空值,也可以有如上所述的值 <ul> <li ng-repeat="(key, val) in
mylist = {
"Tom Hans": true,
"Carl King": true,
"anotherfield": "Josef Bush"
}
或:
我的两个键是如上所述的字符串格式,它们的值总是“true”,还有一个固定键“anotherfield”
,它可以有空值,也可以有如上所述的值
<ul>
<li ng-repeat="(key, val) in mylist" ng-if="val == true">
{{key}}</li>
</ul>
“anotherfield”为空时变量第二个版本的输出:
Tom Hans
Carl King
有人能帮我做到这一点吗?
<ul>
<li ng-repeat="(key, val) in mylist" ng-if="val || val.length">
{{ val.length ? val : key }}</li>
</ul>
{{val.length?val:key}
如果val
为真,或者其长度大于0,则val | | val.length
将匹配
如果val有长度,它将显示val,否则显示键。
-
{{val.length?val:key}
如果val
为真,或者其长度大于0,则val | | val.length
将匹配
如果val有一个长度,它将显示val,否则将显示键。这似乎是简单而明确的:
<ul>
<li ng-repeat="(key, val) in mylist" ng-if="val">
{{ val === true ? key : val }}
</li>
</ul>
mylist中的-
{{val==true?键:val}
这似乎很简单但很明确:
<ul>
<li ng-repeat="(key, val) in mylist" ng-if="val">
{{ val === true ? key : val }}
</li>
</ul>
mylist中的-
{{val==true?键:val}
在if语句中,您不需要询问value==true,如果值为true,只需使用它,另一方面,值if不是“”,可能有一个长度,因此,在hava脚本中,如果某个值大于0,则为true,最后您可以在以下情况下执行ng切换:
<ul>
<li ng-repeat="(key, val) in mylist" ng-switch="val">
<li ng-switch-when="val"> {{key}}</li>
<li ng-switch-when="val.length"> {{val}}</li>
</ul>
-
- {{key}
- {{val}
在if语句中,您不需要询问value==true,如果值为true,只需使用它,另一方面,值if不是“”,可能有一个长度,因此,在hava脚本中,如果某个值大于0,则为true,最后您可以在以下情况下执行ng切换:
<ul>
<li ng-repeat="(key, val) in mylist" ng-switch="val">
<li ng-switch-when="val"> {{key}}</li>
<li ng-switch-when="val.length"> {{val}}</li>
</ul>
-
- {{key}
- {{val}
我个人会将此映射到控制器中的数组,这将减少视图中的观察者和子作用域,并简化视图
$scope.objToArray = function(obj){
return Object.keys(obj).reduce(function(a, key){
if(obj[key] === true){
a.push(key)
}else if(typeof obj[key] === 'string' && obj[key].trim().length){
a.push(obj[key])
}
return a;
},[]);
}
看法
{{item}}
理想的是,如果在源代码中控制数据结构,我会考虑创建更友好的结构
,我将把它映射到控制器中的数组,它将减少观察者和子视图的范围并简化视图。$scope.objToArray = function(obj){
return Object.keys(obj).reduce(function(a, key){
if(obj[key] === true){
a.push(key)
}else if(typeof obj[key] === 'string' && obj[key].trim().length){
a.push(obj[key])
}
return a;
},[]);
}
看法
{{item}}
理想的是,如果在源代码中控制数据结构,我会考虑创建更友好的结构
为什么不重新格式化您的JSON数据,因此第三字段与其他字段的工作方式相同?为什么这样奇怪的数据结构?在看到我的答案时使用NG开关。为什么不重新格式化json数据,使第三个字段的工作方式与其他字段相同?为什么数据结构如此奇怪?在看到我的答案时使用ng开关;)这不起作用,因为它是val
他想为最后一个字段显示的,而不是键
这给了我汤姆·汉斯
卡尔·金另一个字段但是我想要的是另一个字段
的值,而不是它的键。@JeremyThille这很简单,很好,我在,这也行吗?是的,有几种解决方案@弗兰克莫迪卡和下面的其他答案一样好。这不会像他想为最后一个字段显示的val
那样起作用,而不是键
这给了我汤姆·汉斯
卡尔·金另一个字段但是我想要的是另一个字段
的值,而不是它的键,尽管如此。@JeremyThille这很简单也很好,我考虑过ng开关什么时候也可以?是的,有几种解决方案@弗兰克莫迪卡和下面的其他答案也一样好。