如何在AngularJS的ng-repeat中展示数组元素的JSON键名?
解决方法:只显示数组中每个JSON对象的键名
嘿,这事儿好办!你可以通过两种方式实现需求,我都给你列出来:
方法一:在模板中直接获取键名
因为你的每个数组元素都是只有唯一键名的对象,所以可以用Object.keys()方法拿到对象的键数组,再取第一个元素(也就是唯一的那个键)。直接修改模板里的表达式就行:
<div ng-app="myApp"> <div ng-controller="myController"> <div ng-repeat="item in names">{{ Object.keys(item)[0] }}</div> </div> </div>
JS部分不用改,保持原来的数组结构即可:
var app = angular.module('myApp', []); app.controller('myController', function ($scope) { $scope.names= [ {"joe":1}, {"pablo":2}, {"greic":3} ] });
方法二:在控制器中预处理数据
如果之后还需要多次用到这些键名,或者想让模板更简洁,可以提前在控制器里把数组转换成只包含键名的数组:
var app = angular.module('myApp', []); app.controller('myController', function ($scope) { const originalNames = [ {"joe":1}, {"pablo":2}, {"greic":3} ]; // 预处理:提取每个对象的唯一键名 $scope.names = originalNames.map(item => Object.keys(item)[0]); });
这时候模板就可以保持最开始的写法,直接显示item:
<div ng-app="myApp"> <div ng-controller="myController"> <div ng-repeat="item in names">{{item}}</div> </div> </div>
两种方法最终都能输出你想要的结果:
joe
pablo
greic
内容的提问来源于stack exchange,提问作者yavg
相关产品推荐
相关产品推荐

