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

AngularJs:Strange result in iterating key value pair

本文关键字:结果 键值对 迭代 AngularJs      更新时间:2023-09-26

我有一个角度阵列,如下

$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/

我不知道你想做什么,但你可以创建这样的逻辑——它可能对你有用,它是一些硬编码的工作,但会相应地更改

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

在ng重复中使用测试..:)

或者你可以用你的代码做我知道的事情,对你的代码使用这样的ng重复:

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

我不知道Pankaj关于空键值是否正确。但可以肯定的是,$scope.arr不是一个数组,而是一个对象。因此,您的代码应该是:

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

我怀疑您得到的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中尝试了上面的代码,它运行良好。

工作Fiddle(Angular 1.4.8)

您需要用以下内容替换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/