リストとリストフィルター (6/6)
作成:2015-12-26 09:39
更新:2015-12-26 09:39
更新:2015-12-26 09:39
■オリジナルフィルターを利用する
では、作成したフィルター「getRepeat」を使ってみましょう。HTMLファイルを下のリスト欄のように書き換えてください。
今回は、getRepeatフィルターの他、テキストを使って検索するフィルターも追加してあります。HTMLファイルを開くと、「GET?」の値がtrueのデータだけがテーブルに表示されます。これが、getRepeatフィルターによる処理です。
表示を確認したら、「検索」フィールドに何かテキストを書いてみましょう。すると、そのテキストを含む項目だけが表示されます。これは、filterフィルターを利用した処理です。filterを使うことで、簡単にデータの絞り込みが行えるようになっているんですね。
<tr>タグのng-repeat部分を見てみましょう。このように書かれていることがわかりますね。
obj in ctl.data――ctl.dataの配列から順に値を取り出してobjに代入する繰り返し
filter:fstr――テキストにfstrを含むかどうかチェック
orderBy : '-price'――priceの値が大きい順に並べ替え
getRepeat――getの値がtrueのものだけ表示
こんな具合に、4つの値がまとめられていたのです。最初のobj in ctl.dataで繰り返し処理を行い、その後の3つは、リストフィルターとして配列の内容を操作しています。これで、「検索」「並べ替え」「getRepeat」の全てが組み込まれます。
リストフィルターも、テキストのフィルターと同様、実際に作ってみると案外簡単に自作できることがわかるでしょう。リストとリストフィルターは、データの表示を行う場合には必須の機能といえます。ぜひ、ここでマスターしておきましょう。
今回は、getRepeatフィルターの他、テキストを使って検索するフィルターも追加してあります。HTMLファイルを開くと、「GET?」の値がtrueのデータだけがテーブルに表示されます。これが、getRepeatフィルターによる処理です。
表示を確認したら、「検索」フィールドに何かテキストを書いてみましょう。すると、そのテキストを含む項目だけが表示されます。これは、filterフィルターを利用した処理です。filterを使うことで、簡単にデータの絞り込みが行えるようになっているんですね。
<tr>タグのng-repeat部分を見てみましょう。このように書かれていることがわかりますね。
ng-repeat="obj in ctl.data | filter:fstr
| orderBy : '-price' | getRepeat"
obj in ctl.data――ctl.dataの配列から順に値を取り出してobjに代入する繰り返し
filter:fstr――テキストにfstrを含むかどうかチェック
orderBy : '-price'――priceの値が大きい順に並べ替え
getRepeat――getの値がtrueのものだけ表示
こんな具合に、4つの値がまとめられていたのです。最初のobj in ctl.dataで繰り返し処理を行い、その後の3つは、リストフィルターとして配列の内容を操作しています。これで、「検索」「並べ替え」「getRepeat」の全てが組み込まれます。
リストフィルターも、テキストのフィルターと同様、実際に作ってみると案外簡単に自作できることがわかるでしょう。リストとリストフィルターは、データの表示を行う場合には必須の機能といえます。ぜひ、ここでマスターしておきましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<!doctype html>
<html>
<head>
<title>AngularJS Sample</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="script.js"></script>
<style>
body { color:gray; }
h1 { font-size:18pt; font-weight:bold; }
span.label { display:inline-block;width:50px; color:red; }
input { width:100px; }
.msg { font-size:14pt; font-weight:bold;color:gray; }
th { color:#eee; background-color:#999; padding: 5px 10px;}
td { color:#333; background-color:#ddd; padding: 5px 10px;}
</style>
</head>
<body ng-app="myapp" ng-init="num=0">
<h1>データ表示</h1>
<p>テキストを入力して下さい。</p>
<div ng-controller="HeloController as ctl">
<div class="input">
<span class="label">検索:</span>
<input type="text" ng-model="fstr">
</div>
<p class="msg">{{ctl.getData()}}</p>
<hr/>
<table>
<tr><th>ID</th><th>NAME</th><th>PRICE</th><th>GET?</th></tr>
<tr ng-repeat="obj in ctl.data | filter:fstr | orderBy : '-price' | getRepeat">
<td>{{obj.id}}</td>
<td>{{obj.name}}</td>
<td>{{obj.price | currency:"¥"}}</td>
<td>{{obj.get}}</td>
</tr>
</table>
</div>
</body>
</html>
※関連コンテンツ