我怎样才能拆分Angular属性string和使用这些属性types的倍数,而不是使用嵌套的ng-repeat指令?

我没有在Angular中的属性中创build数组,而是在数组中的每个项目中使用ng-repeat,我有兴趣将属性设置为string,并通过逗号循环每个项目。 问题是,对于每个迭代或关键,我也有兴趣抓取相应的电子邮件地址。 我有兴趣使用多个值而不是数组的单个string的原因是我将Microsoft Excel文件转换为JSON文件。 除非有更简单的格式化Excel文件的方法,以便转换器可以将这些值转换为数组而不是string我需要知道如何创build某种服务,筛选或重组我的代码来解决此问题循环一个string而不是一个数组。

收集数据的原始格式:

{ "date": "February 2016", "names": ['name - title', 'name2 - title 2', name3 - title 3'], "year": 5, "emails": ['email@email.com, email2@email.com, email3@email.com'] }, 

从xls转换为JSON的收集数据的新格式:

 { "date": "February 2016" "names": "name - title, name2 - title 2, name3 - title 3", "year": 5, "emails": "email@email.com, email2@email.com, email3@email.com" } 

以下是我的HTML与上述数据相对应。 该对象在$ scope.anns引用

 <section ng-repeat="names in anns | filter: {date:dateText}"> <p><b class="ng-cloak">{{names.year}} Years</b></p> <p ng-repeat="name in names.names track by $index ">{{name}} - filter </p> <p ng-repeat="email in names.emails" class="ng-cloak"><a href="mailto:{{name.emails}}">{{email}}</a></p> </section> <p ng-repeat="name in names.names track by $index ">{{name}} - filter </p> 

我也开始了一个filter,我可以用逗号分隔值,并将其添加到一个新的数组。

 angular.module('main').filter('commaArray', function() { return function(data) { var output = []; angular.forEach(data, function(value, key){ output.push(value); console.log(output); }) return output; } }); 

在我的情况下,我不必使用这个filter,但是我的主要问题是,我不能在另一个ng-repeat指令中创build一个ng-repeat指令,因为这会产生不想要的结果,这样我得到的是多组项目而不是一个独一无二的名字。 我也试图通过$ index使用轨道,但是这仍然会产生不想要的结果。 你能帮我看看我是错了还是我需要做什么来改善这个问题?

你的filter应该使用split()将string转换为数组,例如:

 angular.module('main').filter('commaArray', function() { return function(data) { return data == null ? [] : data.split(',').map(function(s) { return s.trim(); // check that the browsers you want to support support trim(), or use a stock trim function, eg from jQuery }); }; }); 

使用它(注意括号):

 <p ng-repeat="email in (names.emails | commaArray)" ...>...</p>