AngularJSのフィルター周りを試してみます。
uppercaseとlowercase
大文字や小文字に統一します。
HTML
<div ng-controller="sampleCtrl">
<p>■そのまま表示</p>
<ul>
<li ng-repeat="character in loveplus">
{{character}}
</li>
</ul>
<p>■uppercase</p>
<ul>
<li ng-repeat="character in loveplus">
{{character | uppercase}}
</li>
</ul>
<p>■lowercase</p>
<ul>
<li ng-repeat="character in loveplus">
{{character | lowercase}}
</li>
</ul>
</div>
JavaScript
var SampleCtrl = function ($scope) {
$scope.loveplus = ['Takane Manaka', 'kobayakawa rinko', 'ANEGASAKI NENE'];
};
var appModule = angular.module('app', []);
appModule.controller('sampleCtrl', SampleCtrl);
| uppercase | 小文字を大文字に変換する。 |
|---|---|
| lowercase | 大文字を小文字に変換する。 |
numberとcurrency
3桁ごとの「,」追加や小数点以下の制御、通貨の表示を行います。
HTML
<div ng-controller="sampleCtrl">
<p>■そのまま表示</p>
<ul>
<li ng-repeat="item in items">
{{item.name}} : {{item.price}}
</li>
</ul>
<p>■number</p>
<ul>
<li ng-repeat="item in items">
{{item.name}} : {{item.price | number}}
</li>
</ul>
<p>■number:2</p>
<ul>
<li ng-repeat="item in items">
{{item.name}} : {{item.price | number: 2}}
</li>
</ul>
<p>■currency</p>
<ul>
<li ng-repeat="item in items">
{{item.name}} : {{item.price | currency}}
</li>
</ul>
</div>
JavaScript
var SampleCtrl = function ($scope) {
$scope.items = [
{name: 'NEW GAME! (1)', price: '885'},
{name: 'ひぐらしのなく頃に粋', price: '5963'},
{name: '冴えない彼女の育てかた-blessing flowers- (通常版)', price: '5300'},
{name: 'SHIROBAKO 第6巻', price: '6233'},
{name: 'PlayStation Vita Wi-Fiモデル ブラック', price: '19418'}
];
};
var appModule = angular.module('app', []);
appModule.controller('sampleCtrl', SampleCtrl);
| number[: num] | 3桁ごとに「,」で区切って表示する。 number: numのようにすると、小数点以下num桁まで表示されます。 |
|---|---|
| currency | 通貨の表示(「$」の表示や3桁ごとに「,」の挿入)を行う。 日本円表記にするには別途ファイル読み込みの必要があります。 |
date
日付のフォーマットの変更を行います。
HTML
<div ng-controller="sampleCtrl">
<p>■そのまま表示</p>
<div>{{days}}</div>
<p>■date</p>
<div>{{days | date}}</div>
<p>■date: 'MMMM.dd.yyyy (EEEE)'</p>
<div>{{days | date: 'MMMM.dd.yyyy (EEEE)'}}</div>
<p>■date: 'MMM.dd.yyyy (EEE)'</p>
<div>{{days | date: 'MMM.dd.yyyy (EEE)'}}</div>
<p>■date: 'yyyy年MM月dd日 HH時mm分ss秒'</p>
<div>{{days | date: 'yyyy年MM月dd日 HH時mm分ss秒'}}</div>
<p>■date: 'yy.M.d (a) hh:mm:ss.sss'</p>
<div>{{days | date: 'yy.M.d (a) hh:mm:ss.sss'}}</div>
</div>
JavaScript
var SampleCtrl = function ($scope) {
$scope.days = new Date();
};
var appModule = angular.module('app', []);
appModule.controller('sampleCtrl', SampleCtrl);
| date | MMM d, yyyy の形式で表示される。 |
|---|
年
| yyyy | 西暦の4桁を表示する。 |
|---|---|
| yy | 西暦の2桁を表示する。 |
月
| MMMM | January~Decemberを表示する。 |
|---|---|
| MMM | Jan~Decを表示する。 |
| MM | 01~12を表示する。 |
| M | 1~12を表示する。 |
日
| dd | 01~31を表示する。 |
|---|---|
| d | 1~31を表示する。 |
曜日
| EEEE | Sunday~Saturdayを表示する。 |
|---|---|
| EEE | Sun~Satを表示する。 |
時
| HH | 00~23を表示する。 |
|---|---|
| H | 0~23を表示する。 |
| hh | 01~12を表示する。 |
| h | 1~12を表示する。 |
分
| mm | 00~59を表示する。 |
|---|---|
| m | 0~59を表示する。 |
秒
| ss | 00~59を表示する。 |
|---|---|
| s | 0~59を表示する。 |
他
| a | amまたはpmを表示する。 |
|---|---|
| ww | 何週目か(00-53)を表示する。 |
| w | 何週目か(0-53)を表示する。 |
limitToとorderByとfilter
主にng-repeatで使用するフィルター(表示数制限、並び替え、絞り込み)を試してみます。
HTML
<div ng-controller="sampleCtrl">
<p>■そのまま表示</p>
<ul>
<li ng-repeat="character in imas">
{{character.name}} {{character.age}}才 {{character.height}}cm
</li>
</ul>
<p>■limitTo: 3</p>
<ul>
<li ng-repeat="character in imas | limitTo: 3">
{{character.name}} {{character.age}}才 {{character.height}}cm
</li>
</ul>
<p>■orderBy: 'height'</p>
<ul>
<li ng-repeat="character in imas | orderBy: 'height'">
{{character.name}} {{character.age}}才 {{character.height}}cm
</li>
</ul>
<p>■orderBy: '-height' limitTo: 5</p>
<ul>
<li ng-repeat="character in imas | orderBy: '-height' | limitTo: 5">
{{character.name}} {{character.age}}才 {{character.height}}cm
</li>
</ul>
<p>■orderBy: 'height':true limitTo: 5</p>
<ul>
<li ng-repeat="character in imas | orderBy: 'height':true | limitTo: 5">
{{character.name}} {{character.age}}才 {{character.height}}cm
</li>
</ul>
<p>■filter:search</p>
<div><input type="text" ng-model="search" placeholder="検索文字列を入力"></div>
<ul>
<li ng-repeat="character in imas | filter:search">
{{character.name}} {{character.age}}才 {{character.height}}cm
</li>
</ul>
<p>■filter:search2</p>
<div><input type="text" ng-model="search2.name" placeholder="名前を入力"></div>
<ul>
<li ng-repeat="character in imas | filter:search2">
{{character.name}} {{character.age}}才 {{character.height}}cm
</li>
</ul>
</div>
JavaScript
var SampleCtrl = function ($scope) {
$scope.imas = [
{name: 'Uzuki Shimamura', age: 17, height: 159},
{name: 'Rin Shibuya', age: 15, height: 165},
{name: 'Mio Honda', age: 15, height: 161},
{name: 'Miria Akagi', age: 11, height: 140},
{name: 'Anastasia', age: 15, height: 165},
{name: 'Chieri Ogata', age: 16, height: 153},
{name: 'Ranko Kanzaki', age: 14, height: 156},
{name: 'Rika Jougasaki', age: 12, height: 149},
{name: 'Riina Tada', age: 17, height: 152},
{name: 'Minami Nitta', age: 19, height: 165},
{name: 'Anzu Futaba', age: 17, height: 139},
{name: 'Miku Maekawa', age: 15, height: 152},
{name: 'Kanako Mimura', age: 17, height: 153},
{name: 'Kirari Moroboshi', age: 17, height: 186.2}
];
};
var appModule = angular.module('app', []);
appModule.controller('sampleCtrl', SampleCtrl);
| limitTo: num | num件のみ表示に制限する。 |
|---|---|
| orderBy: ‘key‘ | 配列のソートを行う。 逆順にする場合、orderTo: ‘-key’ または orderTo: ‘key’:true とする。 |
| filter: ‘query‘ | queryを含む項目を絞り込んで表示する。 |
i18nのファイルを使用する
currencyの通貨やdateの曜日を日本向けにしてみます。
AngularJS公式サイトからAngularJSをzip形式でダウンロードすると、フォルダ内にangular-locale_ja-jp.jsというファイルが含まれています。
このファイルをAngularJSの後に読み込ませるようにします。
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> <script src="angular-locale_ja-jp.js"></script>
HTML
<div ng-controller="sampleCtrl">
<p>■そのまま表示</p>
<ul>
<li ng-repeat="item in items">
{{item.name}} : {{item.price}}
</li>
</ul>
<p>■currency</p>
<ul>
<li ng-repeat="item in items">
{{item.name}} : {{item.price | currency}}
</li>
</ul>
<p>■そのまま表示</p>
<div>{{days}}</div>
<p>■date</p>
<div>{{days | date}}</div>
<p>■date: 'MMMM.dd.yyyy (EEEE)'</p>
<div>{{days | date: 'MMMM.dd.yyyy (EEEE)'}}</div>
<p>■date: 'MMM.dd.yyyy (EEE)'</p>
<div>{{days | date: 'MMM.dd.yyyy (EEE)'}}</div>
</div>
JavaScript
var SampleCtrl = function ($scope) {
$scope.items = [
{name: 'NEW GAME! (1)', price: '885'},
{name: 'ひぐらしのなく頃に粋', price: '5963'},
{name: '冴えない彼女の育てかた-blessing flowers- (通常版)', price: '5300'},
{name: 'SHIROBAKO 第6巻', price: '6233'},
{name: 'PlayStation Vita Wi-Fiモデル ブラック', price: '19418'}
];
$scope.days = new Date();
};
var appModule = angular.module('app', []);
appModule.controller('sampleCtrl', SampleCtrl);
これでcurrencyの通貨が「\」に、dateの曜日が日本語になります。
日本向けに変更したデモページ
【参考サイト】
コメントが承認されるまで時間がかかります。