AngularJS - 格式文本从JSON返回到标题大小写

时间:2014-06-04 13:47:11

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我有一个从JSON文件中检索数据的服务。

数据中的一些数据全部为大写,例如:

$scope.FootballClubs = [{
    CompanyName: [MANCHESTER UNITED, LIVERPOOL FOOTBALL CLUB, CHELSEA, WIGAN UNTIED, LEICESTER CITY]
}];

在我的HTML中,我只是抛出上述内容:

<div ng-repeat="name in FootballClubs">
    {{ name.CompanyName }}
</div>

抛出:

MANCHESTER UNITED
LIVERPOOL FOOTBALL CLUB
CHELSEA
WIGAN UNTIED
LEICESTER CITY

我想要展示的是:

Manchester United
Liverpool Football Club
Chelsea
Wigan United
Leicester City

3 个答案:

答案 0 :(得分:67)

filter 是此目的的理想解决方案

<div ng-repeat="name in FootballClubs">
    {{ name.CompanyName | titleCase }}
</div>

所以过滤器本身就是

angular.module('myFootballModule', [])
  .filter('titleCase', function() {
    return function(input) {
      input = input || '';
      return input.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
    };
  })

答案 1 :(得分:26)

让我提供一种非指令性的方式,它可能更容易实现,但功能较弱,并且仅依赖于仅作为UI的解决方案。首先,将它们更改为小写{{name.CompanyName.toLowerCase()}}

我认为最简单的方法是使用CSS格式(通过样式标签,类等)。

<div ng-repeat="name in FootballClubs" style="text-transform:capitalize;">
 {{ name.CompanyName.toLowerCase() }}
</div>

以下是演示:http://plnkr.co/edit/S4xtIRApMjKe0yQGREq5?p=preview

答案 2 :(得分:-2)

只需在HTML

中使用此div
  <div ng-repeat="name in FootballClubs">
     {{ name.CompanyName | titleCase:CompanyName }}
 </div>