- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Angular2/jQuery UIのdatepickerを使う へ行く。
- 1 (2016-10-26 (水) 07:37:35)
キーワード†
- Angular2
- jQuery UI
- datepicker
したいこと†
Angular2で作るページにjQuery UIのdatepickerを置きたい。
どうやって†
用意するもの†
- index.html
- datepicker用のDirective
- 使う側のテンプレート
index.html†
<script src="assets/bracket/js/jquery.min.js"></script> <script src="assets/bracket/js/jquery-ui.min.js"></script>
あとたぶん、.cssも要るような気がする。
datepicker用のDirective†
import { Directive, OnInit, Output, EventEmitter, ElementRef } from '@angular/core'; declare var $: any; @Directive({ selector: '[datepicker]' }) export class DatepickerDirective { @Output() change: EventEmitter<string> = new EventEmitter(); constructor( private el: ElementRef ) { } ngOnInit() { $(this.el.nativeElement).datepicker({ closeText: "閉じる", currentText: "今日", monthNames: [ "1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月" ], monthNamesShort: [ "1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月" ], dayNamesShort: [ "日","月","火","水","木","金","土" ], dayNamesMin: [ "日","月","火","水","木","金","土" ], weekHeader: "週", dateFormat: "yy/mm/dd", firstDay: 0, // Sunday will be first of weeks isRTL: false, showMonthAfterYear: true, yearSuffix: "年", showButtonPanel: true, onSelect: (dateText) => { this.change.emit(dateText); } }); } }
大事なところは次。
外部ライブラリを使う†
declare var $: any;
jQueryでもいい。
コンストラクタで要素を取得する†
constructor( private el: ElementRef ) { }
Directiveをつけた要素を取得できる。
$(element).datepicker()を呼ぶ†
ngOnInit() { $(this.el.nativeElement).datepicker({
生エレメントをjQueryに食わせて.datepicker()する。
index.htmlに書くだけだと、要素の後出しでdatepicker()が効いてないことになる。
使う側のテンプレート†
<input datepicker type="text" placeholder="yyyy/MM/dd">
inputにDirective(「datepicker」)をくっつける。
ノート†
datepickerに限らず、この方法でjQueryのいろいろができる。