Angularjs ng-repeat动态属性

时间:2016-06-01 19:34:21

标签: angularjs ng-repeat

<div (ng-repeat='item in items') >
    {{item.name}} //works
    {{item["name"]}} // works
</div>

如何动态重复项[属性]而不使用“.name”或['name']?

2 个答案:

答案 0 :(得分:0)

要动态浏览属性,您需要调用Object.keys(item)然后迭代它们。最好从您的控制器中删除您的数据,以最大限度地减少您在HTML中需要做的事情。

如果您确实想在HTML-Angular结构中尝试这样做,可以定义:

$scope.returnAllKeyValues = function(obj){
    var x = Object.keys(obj),
        arr = [];

    for(var i = 0; i<x.length; i++){
        arr.push(obj[x[i]]);
    }

    return arr;
}

这个函数的作用是它接受你的JSON对象,然后解析它并收集其中每个键的所有值。

然后,在您的HTML中,您可以编写如下内容:

<h3>FIFA Mactch Summary:</h3>
<div ng-app ng-controller="MyCtrl">
    <ul>
        <li ng-repeat="item in items">
          <span ng-init="keyValues = returnAllKeyValues(item)">
              <span ng-repeat="keyValue in keyValues">{{key}} </span>
          </span>
       </li>
    </ul>
</div>

在这里,您可以看到,在原始的ngRepeat中,我们通过上面定义的函数初始化了数组keyValues,其中包含了item&#39; s键中的所有值。然后,重复一遍,你就可以打印所有内容而不知道它们是什么。

这是一个工作的小提琴: http://jsfiddle.net/RkykR/2771/

答案 1 :(得分:0)