该日期控件默认展示英文,若要展示中文格式,需引入angular-locale_zh-cn.js这个脚本。只要正确引入该js即可,无须其它操作,若引入后日期还是英文格式,极大可能为js引入不成功。
设置日期控件datepicker-popup默认展示到月,如图:
html具体实现:
1.datepicker-options="options" 这个属性可设置该日期控件可选择的最小日期;
2.is-open="picker.end_opened" 设置日期控件的打开与关闭;
3.datepicker-popup="yyyy-MM" 设置日期格式化;
4.ng-click="open_start($event)" 日期打开、关闭按钮。
<div class="col-md-3">
<form role="form" class="form-inline">
<div class="input-group">
<label for="dtp_input2" class="control-label">查询结束时间: </label>
<div id="end" data-link-field="dtp_input2" class="input-group date form_date">
<input id="endTime" readonly="" required="" type="text" ng-required="true" datepicker-popup="yyyy-MM" ng-model="versionDatas.all.filter.endTime" datepicker-options="options" is-open="picker.end_opened" current-text="今天" close-text="关闭"
clear-text="清除" placeholder="结束时间" class="form-control" />
<span class="input-group-btn">
<button type="button" ng-click="open_end($event)" class="btn btn-default">
<em class="fa fa-calendar"></em>
</button>
</span>
</div>
<input id="dtp_input2" type="hidden" value="" />
<br/>
</div>
</form>
</div>
js具体实现:
1. 引入datepickerConfig模块,在ui-bootstrap.js中配置了日期控件默认展示界面,具体设置在datepickerConfig中配置,所以想要修改默认日期控件但不更改源码,可以在js层顶部引入该模块;
2. datepickerConfig.datepickerMode = "month"; 设置日期空间默认展示月份;
3. $scope.options = {minMode:'month'}; 设置日期控件最小展示到月;
4. 第2,3点必须配合使用,否则会出现首次点击和二次点击展示日期控件不一致情况;
5. $scope.picker={};用该字段控制日期控件的展开和关闭。该出最好使用$scope.picker.start_opened这种格式,不推荐$scope.start_opened。使用$scope.start_opened在某些情况下会导致日期控件只能打开一次。
App.controller("ProjectPCBCtrl", ['$rootScope','$scope','$location', '$http', '$state','NgTableParams','$filter','$timeout','$modal','datepickerConfig',
function ($rootScope, $scope, $location, $http, $state, NgTableParams, $filter, $timeout,$modal,datepickerConfig){
$scope.picker={};
datepickerConfig.datepickerMode = "month"; //设置日期空间默认展示月份
$scope.options = {minMode:'month'}; //设置日期控件最小展示到月
$scope.open_start = function (event) {
event.preventDefault();
event.stopPropagation();
$scope.picker.start_opened = true;
$scope.picker.end_opened = false;
};
}]);
参考:
1. 在ui-bootstrap.js中datepickerConfig的默认配置信息(该部分代码为源码信息,不推荐修改):
angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.position'])
.constant('datepickerConfig', {
formatDay: 'dd',
formatMonth: 'MMMM',
formatYear: 'yyyy',
formatDayHeader: 'EEE',
formatDayTitle: 'MMMM yyyy',
formatMonthTitle: 'yyyy',
datepickerMode: 'day',
minMode: 'day',
maxMode: 'year',
showWeeks: true,
startingDay: 0,
yearRange: 20,
minDate: null,
maxDate: null
})
2. ui-datepicker-popup扩展了Datepicker控件,所有可以使用Datepicker的配置,即datepicker-options。这是一个Json对象,以下列出它可以设置的项:
键 | 默认值 | 备注 |
customClass | 一个可选的函数,设置日期面板中每个日期的样式。传入参数为一个json对象{date: obj1, mode: obj2},返回值为类的名字 | |
dateDisabled | 一个可选的函数,设置日期面板中每个日期是否可选。传入参数为一个json对象{date: obj1, mode: obj2},返回值为bool类型 | |
datepickerMode | day | 可设置为day,month,year。表示控件的选择模式 |
formatDay | dd | 天数的格式化形式 |
formatMonth | MMMM | 月份的格式化形式 |
formatYear | yyyy | 年份的格式化形式 |
formatDayHeader | EEE | 星期的格式化形式 |
formatDayTitle | MMMM yyyy | 按天数选择日期时,面板中当前月份和年份的格式化形式(显示为:六月 2016 的地方) |
formatMonthTitle | yyyy | 按月份选择日期时,面板中当前年份的格式化形式 |
initDate | null | 初始化日期 |
maxDate | null | 可选择的最大日期(必须是Javascript日期类型) |
maxMode | year | 可选择的最大日期模式 |
minDate | null | 可选择的最小日期(必须是Javascript日期类型) |
minMode | day | 可选择的最小日期模式 |
shortcutPropagation | false | 是否禁用键盘事件传播 |
showWeeks | true | 是否显示面板中的日期是当年的第几周 |
startingDay | $locale.DATETIME_FORMATS.FIRSTDAYOFWEEK | 一个星期从周几开始。可设置为0到6的数字,0表示周日,6表示周六 |
yearRows | 4 | 选择年份时显示多少行 |
yearColumns | 5 | 选择年份时显示多少列 |