ng-repeat将数组解析为字符串

时间:2015-03-31 08:37:44

标签: javascript angularjs parsing angularjs-ng-repeat

是否可以将ng-repeat数组值解析为字符串?我会解释我的意思。

 <tr ng-repeat="(key,property) in obj.properties">
      <td>{{key}}</td>
      <td>{{property}}</td>
 </tr>   

这个{{property}}是一个数组,例如[7,8],但我想展示&#34; Jully - August&#34;。可以通过过滤器吗?或者我需要在控制器中解析它。

3 个答案:

答案 0 :(得分:0)

将过滤器转换号码用于月份名称: -

<td>{{property|monthName}}</td>

   app.filter('monthName', [function() {
    return function (monthNumber) { 
      //1 = January
        var monthNames = [ 'January', 'February', 'March', 'April', 'May', 'June',
            'July', 'August', 'September', 'October', 'November', 'December' ];
         var nameList="";
         for(var i=0;i<monthNumber.length;i++){
           if(i==monthNumber.length-1){
         nameList+=monthNames[monthNumber[i] - 1];
           }else{
             nameList+=monthNames[monthNumber[i] - 1]+"-";
           }
         }
         return nameList;
    }
}]);

Plunker

答案 1 :(得分:0)

你也可以这样做

<td>{{property|showMonthName}}</td>

app.filter('showMonthName', function() {
    return function (months) {
    var monthNames = [ 'January', 'February', 'March', 'April', 'May', 'June',
        'July', 'August', 'September', 'October', 'November', 'December' ];

    months = months.map(function(i){
      return monthNames[i-1];
    }); 

   return months.join(' - ');    
 }
});

答案 2 :(得分:0)

所以我在自己的系统中试过这个。我创建了一个过滤器并应用于ng-repeat内部。它完美地运作。您可以根据此修改自己的过滤器。

<test-directive keyword = "view.ctrlKeywordinput" ng-repeat="movie in [1,2]" ><div> {{movie | monthfilter}}</div></test-directive>

这是我的过滤器:

app.filter("monthfilter", function(){
return function(input){

        switch(input){

        case 1: 
        return "january";
        break;

        case 2:
        return "february";
        break;

        }

    };

});