2015-09-04 59 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和所有現代瀏覽器。 –