吹き出しを表示するUIコンポーネントです
サンプルはこちら
(function() { var controller = { /** * @memberOf sample.PageController */ __name: 'sample.PageController', /** * テンプレート。ArrowBoxを使用するので、arrowbox.ejsを読み込む。 * * @memberOf sample.PageController */ __templates: '../src/arrowbox.ejs', /** * ArrowBoxControllerを子コントローラとして定義する * * @memberOf sample.PageController */ _arrowboxController: h5.ui.components.arrowbox.ArrowBoxController, /** * @memberOf sample.PageController */ __ready: function() { // 吹き出しに表示するメッセージの設定 this.view .register( 'message', '<div&rt;<p&rt;吹き出しサンプル</p&rt;<p&rt;吹き出しサンプルです</p&rt;<button class="removeArrowBox" style="float: right"&rt;OK</button&rt;</div&rt;'); }, /** * 吹き出し表示ボタンクリック * * @memberOf sample.PageController * @param context */ '.sampleDiv1 .sample-btn click': function(context, $el) { // 吹き出しを表示する方向を取得。up, down, left, rightのいずれか。 var direction = $el.data('direction'); // ボタン要素の親要素を吹き出しを表示するターゲットにする var $target = $el.parent(); // createでArrowBoxインスタンスを作成 var arrowbox = this._arrowboxController.create(this.view.get('message')); // 吹き出しの表示 arrowbox.show({ target: $target, direction: direction }); }, /** * 吹き出しをクリックした箇所に表示 * * @memberOf sample.PageController * @param context */ '.sampleDiv2 click': function(context) { var x = context.event.pageX; var y = context.event.pageY; // 既にposition-setクラスを持つ吹き出しがあったら削除する var $arrowbox = this.$find('.position-set'); // 吹き出しの要素からArrowBoxインスタンスを取得 var preArrowbox = this._arrowboxController.getArrowBoxFromElement($arrowbox); // 吹き出しをdispose preArrowbox && preArrowbox.dispose(); // 第2引数でクラスを追加する var arrowbox = this._arrowboxController.create(this.view.get('message'), { cls: 'position-set' }); arrowbox.show({ position: { left: x, top: y } }); }, /** * 吹き出し内のOKボタンクリック。吹き出しを削除する。 * * @memberOf sample.PageController * @param context */ '.removeArrowBox click': function(context, $el) { // 吹き出し要素の取得 var $arrowbox = $el.parents('.h5arrowbox'); // ArrowBoxインスタンスの取り出し var arrowbox = this._arrowboxController.getArrowBoxFromElement($arrowbox); // 吹き出しの削除 arrowbox.dispose(); } }; h5.core.expose(controller); })(); $(function() { // コントローラのバインド h5.core.controller('body', sample.PageController); });