Ng重复多维数组

时间:2015-08-31 23:54:40

标签: javascript arrays angularjs angularjs-ng-repeat

localStorage是一个对象,我想要迭代的多维数组(localStorage.add)与其他数组一起存储。

<tr ng-repeat = "(key, value) in localStorage track by $index" ng-if = "localStorage.add.length > $index || localStorage.subject.length > $index || localStorage.emailContent > $index" >
                <td>
                    <input type="checkbox" ng-checked="checkAllEmail" ng-model="selectedEmail"/>
                    <a href="#">
                        <span class="glyphicon glyphicon-star-empty"></span>
                    </a>
                </td>

                <td   >
                    {{localStorage.add[$index]}}
                <td>

                <td >
                    {{localStorage.subject[$index]}}
                <td>

                <td >
                    {{localStorage.emailContent[$index]}}
                <td>
        </tr>

这是localStorage.add数组 - [["Elizabeth","Caroline"],["Patricia"],["Madhu"]]

{{localStorage.add[$index]}}显示

["Elizabeth","Caroline"]        
["Patricia"]            
["Madhu"]

我只想显示数组中的值。因此,例如,{{localStorage.add[1][0]}}显示"Patricia"而非["Patricia"]。有没有人有关于如何实现这一点的想法?我尝试了{{localStorage.add[$index][$index]}},它只显示Elizabeth{{localStorage.add[0][0]}})而不显示["Elizabeth"]。所以,我正在寻找类似于{{localStorage.add[$index][$index]}}的东西,它适用于数组中的所有元素。

为了避免混淆,我的应用程序正在按预期工作。我只是不希望用户看到我将这些值存储在数组中。这是最终输出应该是这样的:

Elizabeth,Caroline      
Patricia
Madhu

1 个答案:

答案 0 :(得分:0)

您需要将数组转换为字符串,因此在您的控制器中,创建一个您的视图可以调用的函数并获取返回的字符串,例如:

<tr ng-repeat = "(key, value) in localStorage track by $index" ng-if = "localStorage.add.length > $index || localStorage.subject.length > $index || localStorage.emailContent > $index" >
            <td>
                <input type="checkbox" ng-checked="checkAllEmail" ng-model="selectedEmail"/>
                <a href="#">
                    <span class="glyphicon glyphicon-star-empty"></span>
                </a>
            </td>

            <td>
                {{getNames(localStorage.add[$index])}}
            <td>

            <td >
                {{localStorage.subject[$index]}}
            <td>

            <td >
                {{localStorage.emailContent[$index]}}
            <td>
</tr>

这将在您的控制器中,您可以根据需要更改分隔符

$scope.getNames = function(names){
  return names.join(',')
}

您可以直接在视图中执行此操作:

localStorage.add[$index].join(',') 

但我不推荐它,如果它有效(不确定)