加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Angular UI Bootstrap Datepicker – 为模板添加自

发布时间:2020-12-17 17:04:15 所属栏目:安全 来源:网络整理
导读:我想通过为单元格添加颜色来指定Angular UI日期单元格的颜色,因此我使用以下内容覆盖默认模板: !-- things from pasted default template,here I change something --!-- btn-danger instead btn-info for clicked date,test if I can change anything--!--
我想通过为单元格添加颜色来指定Angular UI日期单元格的颜色,因此我使用以下内容覆盖默认模板:

<!-- things from pasted default template,here I change something -->
<!-- btn-danger instead btn-info for clicked date,test if I can change anything-->
<!-- call to function from my own controller-->
<button type="button" style="width:100%;" class="btn btn-default btn-sm"
    ng-class="{'btn-danger': dt.selected,active: isActive(dt)}" ng-click="select(dt.date)"
    ng-disabled="dt.disabled" tabindex="-1">
    <span ng-class="{'text-muted': dt.secondary,'text-info': dt.current,'text-success': hasEventsCreatedByUser(dt)}">
    {{dt.label}}</span>
</button>

这就是我的testController中的(此刻)功能

$scope.hasEventsCreatedByUser = function(date){
            return true;
};

从btn-info更改为btn-danger非常容易,它只是粘贴另一个类:)但是我不能在我的控制器中调用方法 – 是否有任何解决方案可以在Angular UI模板中启用我的控制器调用函数或者我必须覆盖在某种程度上默认DatepickerController?

更详细的描述:用户可以创建具有指定日期的事件.例如,这个想法是使用创建绿色的日期创建单元格

模拟解决方案发现:

我使用“miniController”,我只在按钮上添加:

<button ng-controller="miniController" type="button" style="width:100%;" class="btn btn-default btn-sm" .....

但我知道这只是模拟不是解决方案 – 如果有人知道如何弄清楚,如果决定帮助我,我会很高兴 – 提前谢谢你!

解决方法

我知道在源文件中进行更改不是一个好主意.但如果您可以在ui bootstrap源文件中进行更改,则可以实现不同的颜色.这是我做的一个.

以下是来源的变化.

日期选择器模板更改(datepicker.html)

<tr ng-repeat="row in rows">n" +
    "      <td ng-show="showWeekNumbers" class="text-center"><em>{{ getWeekNumber(row) }}</em></td>n" +
    "      <td ng-repeat="dt in row" class="text-center">n" +
    "        <button type="button" style="width:100%;" class="btn btn-default btn-sm" ng-class="{'dt-disabled':dt.disabled,'btn-info': dt.selected,'dt-selected': dt.selected,'dt-available':(dt.verified && dt.available),'dt-verified':dt.verified}" ng-click="select(dt.date)" ng-disabled="dt.disabled"><span ng-class="{'text-muted': dt.secondary}">{{dt.label}}</span></button>n" +
    "      </td>n" +
    "    </tr>n" +

日期选择器控制器更改(DatepickerController)

//Your modification starts
  this.dateVerified = function(date,mode){
      var currentMode = this.modes[mode || 0];
      return ($scope.dateVerified && $scope.dateVerified({date: date,mode: currentMode.name}))
  }

  this.dateAvailable = function(date,mode){
      var currentMode = this.modes[mode || 0];
      return ($scope.dateAvailable && $scope.dateAvailable({date: date,mode: currentMode.name}))
  }
  //your modification end

日期选择器指令更改(datepicker)

.directive( 'datepicker',['dateFilter','$parse','datepickerConfig','$log',function (dateFilter,$parse,datepickerConfig,$log) {
  return {
    restrict: 'EA',replace: true,templateUrl: 'template/datepicker/datepicker.html',scope: {
      dateDisabled: '&',//your modification starts here
      dateVerified:'&',dateAvailable:'&',//Your modification ends here
    },ngModel.$setValidity('date',valid);

    var currentMode = datepickerCtrl.modes[mode],data = currentMode.getVisibleDates(selected,date);
    angular.forEach(data.objects,function(obj) {
      obj.disabled = datepickerCtrl.isDisabled(obj.date,mode);
    });

  //your modification starts here
    //set dateVerfied 
    if(datepickerCtrl.dateVerified){
        angular.forEach(data.objects,function(obj) {
            obj.verified = datepickerCtrl.dateVerified(obj.date,mode);
        });
    }
    //set date availabe
    if(datepickerCtrl.dateAvailable){
        angular.forEach(data.objects,function(obj) {
            obj.available = datepickerCtrl.dateAvailable(obj.date,mode);
        });
    }
    //Your modification ends here
    ngModel.$setValidity('date-disabled',(!date || !datepickerCtrl.isDisabled(date)));

    scope.rows = split(data.objects,currentMode.split);
    scope.labels = data.labels || [];
    scope.title = data.title;

你的代码模板

<datepicker ng-model="model.selectedDate" ng-click="dateClicked();" date-format="yyyy-MM-dd" date-type="string"  ng-class="{'opacity-2':model.loadingDate}" style="width: 395px;height: 230px;margin:0 auto;" date-disabled="isDateNonAvailableDate(date,mode)" date-verified="dateVerified(date,mode);" date-available="dateAvailable(date,mode);" show-weeks="true" class="well well-sm" close-text="Close"></datepicker>

你的控制器

$scope.dateVerified= function(date,mode) {
        return true;

$scope.dateAvailable = function(date,mode) {
         return true; // to get color
     };

你的CSS

.dt-available{
    color: #fff;
    background-color: green !important;
    border-color: green !important;
}

.dt-disabled{
    color: #fff;
    background-color: red !important;
    border-color: red !important;
}

.dt-selected{
    color: #fff;
    background-color: blue !important;
    border-color: blue !important;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读