AngularUI 日期選取器- 選取時間區間
最近在練習 Angular 跟 AngularUI ,其實手邊同時在進行新玩的東西好多..
有一個需求是使用 Angular 來做 DatePicker ,因為有一個結合 Bootstrap 的 AngularUI 有這個功能,於是就參考他的寫法改了一個可以選取時間區間的 UI。
首先設好 AngularUI 的環境,他方便的是都有 cdn 可以用,複製一下就可以在本機端直接實作了。
準備 html:
因為要選擇一個區間,所以除了兩個顯示選取時間的 input 欄位要各自的 model 外,我還各自放了 ng-change="toggleMin()", max="maxDate" 和 min="minDate" ng-change="toggleMax()" ,用以偵測在一邊改變後,是另一個欄位的最大(小)值。
Demo
有一個需求是使用 Angular 來做 DatePicker ,因為有一個結合 Bootstrap 的 AngularUI 有這個功能,於是就參考他的寫法改了一個可以選取時間區間的 UI。
首先設好 AngularUI 的環境,他方便的是都有 cdn 可以用,複製一下就可以在本機端直接實作了。
準備 html:
- <div class="wrapper" ng-controller="Datepicker1" >
- <div class="form-horizontal">
- <p>
- <input type="text" datepicker-popup="{{format}}" ng-change="toggleMin()" ng-model="dt" is-open="opened" datepicker-options="dateOptions" max="maxDate" ng-required="true" close-text="Close" />
- </p>
- <p>
- <input type="text" datepicker-popup="{{format}}" ng-model="dt2" is-open="opened2" datepicker-options="dateOptions" ng-required="true" min="minDate" ng-change="toggleMax()" close-text="Close" />
- </p>
- </div>
- </div>
因為要選擇一個區間,所以除了兩個顯示選取時間的 input 欄位要各自的 model 外,我還各自放了 ng-change="toggleMin()", max="maxDate" 和 min="minDate" ng-change="toggleMax()" ,用以偵測在一邊改變後,是另一個欄位的最大(小)值。
- angular.module('plunker', ['ui.bootstrap']);
- var Datepicker1 = function ($scope, $timeout) {
- $scope.today = function() {
- $scope.dt = new Date();
- $scope.dt2 = new Date();
- };
- $scope.today();
- $scope.toggleMin = function() {
- $scope.minDate = $scope.dt;
- };
- $scope.toggleMin();
- $scope.toggleMax = function() {
- $scope.maxDate = $scope.dt2;
- };
- $scope.toggleMax();
- $scope.open = function() {
- $timeout(function() {
- $scope.opened = true;
- });
- };
- $scope.open2 = function() {
- $timeout(function() {
- $scope.opened2 = true;
- });
- };
- $scope.dateOptions = {
- 'year-format': "'yy'"
- };
- $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'shortDate'];
- $scope.format = $scope.formats[0];
- };
Demo
留言