AngularJs中ui-Bootstrap日期控件datepicker-popup默认展示到月份的设置,解决日期控件只能打开一次的问题

该日期控件默认展示英文,若要展示中文格式,需引入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">查询结束时间: &nbsp;&nbsp;</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类型
datepickerModeday可设置为day,month,year。表示控件的选择模式
formatDaydd天数的格式化形式
formatMonthMMMM月份的格式化形式
formatYearyyyy年份的格式化形式
formatDayHeaderEEE星期的格式化形式
formatDayTitleMMMM yyyy按天数选择日期时,面板中当前月份和年份的格式化形式(显示为:六月 2016 的地方)
formatMonthTitleyyyy按月份选择日期时,面板中当前年份的格式化形式
initDatenull初始化日期
maxDatenull可选择的最大日期(必须是Javascript日期类型)
maxModeyear可选择的最大日期模式
minDatenull可选择的最小日期(必须是Javascript日期类型)
minModeday可选择的最小日期模式
shortcutPropagation false是否禁用键盘事件传播
showWeekstrue是否显示面板中的日期是当年的第几周
startingDay$locale.DATETIME_FORMATS.FIRSTDAYOFWEEK一个星期从周几开始。可设置为0到6的数字,0表示周日,6表示周六
yearRows4选择年份时显示多少行
yearColumns5选择年份时显示多少列
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值