我有一些数据需要通过ngRepeat进行循环并动态访问数据,这些数据可能位于顶层或嵌套在几个级别。
但是,似乎我可以显示顶级属性,但不能在嵌套时显示。
JS:
var mapping = [
{property:'a'}, // works
{property:'b.c1'}, // doesn't work
{property:'b.c2'} // doesnt work
];
var arr = {
a: 'text',
b: {
c1: 'text2',
c2: 'text3'
}
};
HTML:
<div ng-repeat="mappingItem in mapping">
<p>{{arr[mappingItem.property]}}</p>
</div>
答案 0 :(得分:1)
您可以使用angular $parse服务来评估arr
的表达式:
$scope.map = function(property) {
return $parse(property)(arr);
};
<div ng-repeat="mappingItem in mapping">
<p>{{map(mappingItem.property)}}</p>
</div>
答案 1 :(得分:0)
我怀疑你的方法会奏效。原因是您尝试访问该对象的方式不正确,即:arr[mappingItem.property]
将变为arr['b.c1']
,但您的对象没有密钥'b.c1'
。 @ DivyaMV的建议无效,因为b
中的属性mapping
不是对象,因此它没有密钥c1
。我建议您更改对象的结构或,更改您尝试访问对象的方式,即使用ng-if
检查多个级别, OR 而不是循环,逐个显示属性
答案 2 :(得分:0)
如果您使用{“property”:“b”,“chiled”:“c1”}结构类型,那么它可以工作。
的
的var mapping = [
{property:'a'},
{"property":"b","chiled":"c1"},// works
{property:'b.c2'}
];
的
<div ng-repeat="mappingItem in mapping"> <p>{{arr[mappingItem.property][mappingItem.chiled]}}</p> <!-- it works for second object--> </div>