AngularJs:迭代键值对的奇怪结果

时间:2015-12-05 17:14:14

标签: javascript angularjs angularjs-ng-repeat

我有一个角度数组如下

$scope.arr={
    "abc/xyz/../": [
        "a1.txt",
        "a2.txt",
        "a3.txt"
    ],
    "": [
        "no-folder.txt"
    ],
    "abc1/xyz/../": [
        "a4.txt",
        "a5.txt",
        "a6.txt"
    ]
}

我想迭代这个数组,需要得到如下结果

    "a1.txt",
    "a2.txt",
    "a3.txt" 

"no-folder.txt"

            "a4.txt",
            "a5.txt",
            "a6.txt"

我尝试过如下

<div ng-repeat="test in arr track by $index">
    <h3 ng-repeat="(key, value) in test">
        {{value}}
    </h3>
</div>

但是我得到了奇怪的结果,因为每个角色都会因此而来。 请你帮忙。

更新 请看这个小提琴 https://jsfiddle.net/771voyj6/8/

4 个答案:

答案 0 :(得分:2)

我怀疑你得到的JSON是无效的JSON。对象的第二个属性是""(空白),这将是无效的JSON。

<强> JSON

{
    "abc/xyz/../": [
        "a1.txt",
        "a2.txt",
        "a3.txt"
    ],
    //in below line json has no key
    "": [
        "no-folder.txt"
    ],
    "abc1/xyz/../": [
        "a4.txt",
        "a5.txt",
        "a6.txt"
    ]
}

<强>更新

关于JSON概念化错误的道歉,JSON以上是有效的JSON(但技术上JSON不应该有空白键)。我在Fiddle中尝试了上面的代码,工作正常。

Working Fiddle(Angular 1.4.8)

答案 1 :(得分:2)

我不知道Pankaj对于空键值是否正确。但当然你的$scope.arr不是数组而是对象。 因此,您的代码应该是:

<div ng-repeat="(key, value)in arr track by $index">
    <h3 ng-repeat=" item in value">
        {{item}}
    </h3>
</div>

答案 2 :(得分:2)

我不知道你想做什么,但你可以创建这样的逻辑,它可能适合你,它的一些硬编码工作,但相应地改变它

       $scope.test = []

       $scope.test.push(arr["abc1/xyz/../"]+arr[""]+arr["abc1/xyz/../"]);

在ng-repeat中使用测试..:)

或者您可以使用您的代码执行我所知道的代码,使用ng-repeat代码来代码:

<div ng-repeat="test in arr">
            <div ng-repeat="test2 in test">
              {{test2}}
              </div>

答案 3 :(得分:0)

您需要使用以下内容替换HTML代码:

<div ng-repeat="test in arr track by $index"> <div ng-repeat="item in test"> {{item}} </div> </div>

我得到了结果。请检查以下JSFiddle:

http://jsfiddle.net/akonchady/a25r1mm4/3/