2015-09-04 58 views
4

我有如下数组:AngularJS:整洁的方法来打印数组作为字符串

"cast": [ 
     { 
     "name": "James Stewart" 
     }, 
     { 
     "name": "Kim Novak" 
     }, 
     { 
     "name": "Barbara Bel Geddes" 
     }, 
     { 
     "name": "Tom Helmore" 
     } 
    ] 

什么是整齐的AngularJS向格式化为:

James Stewart, Kim Novak, Barbara Bel Geddes, Tom Helmore 

是否有使用方法filterformatter这样我可以整齐地做它喜欢的模板:

<font class="authors-string">{{ object.cast | filter/formatter/? }}</font> 

我觉得写逻辑控制器中的这种简单的解析会使杂乱的控制器体。

感谢您的关注。

+2

只要使用'NG-repeat':''​​编辑:''可能会为你更好地在这里 – azium

+0

没有'NG-repeat'不行? – Claies

+0

对于ng-repeat,我将如何通过逗号加入字符串? –

回答

9

这是提取从每个阵列元件中的某些道具的过滤器,然后使用分离器(demo)加入他们:

app.filter('join', function() { 
    return function join(array, separator, prop) { 
     if (!Array.isArray(array)) { 
      return array; // if not array return original - can also throw error 
     } 

     return (!angular.isUndefined(prop) ? array.map(function (item) { 
      return item[prop]; 
     }) : array).join(separator); 
    }; 
}); 

用法:

<p class="authors-string">{{ cast | join:', ':'name' }}</p> 

如果它是一个扁平阵列,请删除第三个参数:

<p class="authors-string">{{ animals | join:', ' }}</p> 
+0

谢谢,它简化了我的代码。但是有没有与使用Array.prototype.map相关的兼容性相关的危险? –

+0

它适用于IE9和所有现代浏览器。 –