なお、本連載ではAngularJSそのものに関しては解説しませんので、専門書として『AngularJSアプリケーションプログラミング』、姉妹連載「AngularJSではじめるJavaScriptフレームワーク開発スタイル」などを併せて参照してください。
はじめに
本連載も早いもので、8回目となりました。今回は、ユーザーに対して簡単な通知を表現するために役立つ、以下のライブラリについて紹介します。
- UI Bootstrap(Tooltip):ツールチップを表示
- AngularJS Toaster:トーストを生成
- Angular Loading Bar:非同期通信時にプログレスバー/スピナーを生成
対象読者
- AngularJSについて基本的な概念を理解している方
- AngularJSで利用できる拡張モジュールに興味がある方
- AngularJSアプリでデータを視覚的に見せる方法を知りたい方
検証環境
この記事では、以下の環境でサンプルの動作を確認しています。
- AngularJS 1.4.7
- UI Bootstrap 0.14.3
- AngularJS Toaster 0.4.15
- Angular Loading Bar 0.8.0
- Chrome 46
- Firefox 41
- Internet Explorer 11
ツールチップを表示する - UI Bootstrap(Tooltip)
ツールチップとは、ハイパーリンク/テキストボックスなどにマウスポインターを当てた時に表示される小さなテキストのこと。対象となる要素の補足/ヘルプ情報を表すのに利用されることが多いことから、ツールヒントと呼ばれることもあります。
このようなツールチップを生成するのが、本連載でも何度か利用してきたUI Bootstrapに属するTooltipウィジェットです。Bowerを利用することで、以下のコマンドでインストールできます。
> bower install --save angular-bootstrap bootstrap
では、具体的なサンプルをみていきましょう。以下は、リンクにマウスを当てることで、関連する情報をツールチップとして表示するサンプルです。
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="UTF-8" />
<title>AngularJS</title>
<!-- (1)UI BootstrapとBootstrap本体をインポート -->
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css" />
<script src="bower_components/angular/angular.min.js"></script>
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
<script src="scripts/tooltip.js"></script>
<!-- (4)テンプレートを定義 -->
<script type="text/ng-template" id="logo.html">
<a>
<img src="http://www.wings.msn.to/image/wings.jpg" style="width:120px"/>
<br />
<a href="http://www.wings.msn.to/">WINGSプロジェクト</a>
</a>
</script>
</head>
<body ng-controller="MyController">
<p>
プログラミング技術に関する情報を集約した
<!-- (3)uib-tooltip属性で表示テキストを指定 -->
<a href="http://www.wings.msn.to/" tooltip-placement="bottom"
uib-tooltip="Www INtegrated Guide on Server-architecture"
tooltip-trigger="mouseenter">
WINGSサイト
</a>
を紹介します。</p>
<p>開発時に便利な
<a href="http://www.wings.msn.to/index.php/-/B-08/"
uib-tooltip="画面キャプチャ入りの手順解説"
tooltip-placement="right" tooltip-trigger="mouseenter">
環境構築設定
</a>
のページや
<a href="http://www.wings.msn.to/index.php/-/B-14/"
uib-tooltip="困った時に使える" tooltip-placement="bottom"
tooltip-trigger="mouseenter">
Q&A掲示板
</a>
があります。</p>
ただいま、執筆メンバーを募集中です。
<!-- (5)テンプレートをもとにツールチップを生成 -->
<a href="#" uib-tooltip-template="'logo.html'" tooltip-placement="bottom"
tooltip-trigger="click">WINGS
</a>
で、一緒に頑張ってみませんか?
</body>
</html>
// (2)ui.bootstrapモジュールへの依存関係を設定
angular.module('myApp', [ 'ui.bootstrap' ])
.controller('MyController', ['$scope', function($scope) {
}]);
UI Bootstrapを利用するには、UI Bootstrap(ui-bootstrap-tpls.min.js)とともに、Bootstrap本体(bootstrap.min.css)もインポートしておきます(1)。また、アプリモジュール(myApp)からはui.bootstrapモジュールへの依存関係を宣言して、UI Bootstrapを有効化します(2)。
あとは、該当する要素に対してuib-tooltipディレクティブ(属性)で表示テキストを指定するだけです(3)。以下の属性によって、表示方法を設定することも可能です。
| 属性 | 概要 | デフォルト値 |
|---|---|---|
| tooltip-placement | 表示位置(top/bottom/left/right) | top |
| tooltip-trigger | 表示のトリガーとなるイベント(mouseenter/click/focus) | mouseenter |
| tooltip-popup-delay | イベント発生から表示までのタイムラグ(ミリ秒) | 0 |
| tooltip-animation | アニメーション(フェード)を適用するか | true |
| tooltip-class | ツールチップに適用するスタイルクラス | - |
より複雑なテキスト/画像をツールチップとして表示したい場合には、表示テキストをテンプレートとして切り出すこともできます。テンプレートは、<script type="text/ng-template">要素で定義できます(4)。あとは、uib-tooltip属性の代わりにuib-tooltip-template属性でテンプレートのid値を指定するだけです(5)。
