web-dev-qa-db-ja.com

AngularJS-JSONからタイトルケースに戻るテキストのフォーマット

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
34
Oam Psy

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();});
    };
  })
68
dubadub

おそらく実装は簡単ですが、あまり強力ではなく、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

26
lucuma