【问题标题】:Having trouble using click events with ionic-calendar 2在 ionic-calendar 2 中使用点击事件时遇到问题
【发布时间】:2019-12-05 20:54:49
【问题描述】:

我正在尝试对 ionic-calendar 2 使用(单击)事件,如果用户单击已经过去的日期,它会禁用按钮,我的问题是,当我第一次单击过去的日期时,按钮是没有被禁用,但是我第二次按下它会禁用按钮,好像日历本身没有识别出有人在第一次点击时点击了不同的日期。

HTML

 <calendar (click)='passedDate()' [eventSource]='eventSource'
   [calendarMode]='calendar.mode'
   [currentDate]='calendar.currentDate'
   (onEventSelected)='onEventSelected($event)'
   (onTitleChanged)='onViewTitleChanged($event)'
   (onTimeSelected)='onTimeSelected($event)'
   step='30'
   class='calendar'>
  </calendar>

  <button ion-button (click)='appointments()' id="date" block [disabled]="block"> 
    Next
   </button>

打字稿

  eventSource =[];
  viewTitle: string;
  selectedDay =  new Date();
  block = false; //If user clicks on a date that has already passed this value turns true
  calendar = {
    mode: 'month',
    currentDate: ''


  }

  onViewTitleChanged(title){
    this.viewTitle = title;
  }

  onTimeSelected(ev){
   this.selectedDay = ev.selectedTime;
  }

  passedDate(){
    const date = new Date();

    if(this.selectedDay < date){
      this.block = true;
    }
    else { this.block = false;} 
  }

这是我第一次使用 ion-calendar 2,所以我不确定点击事件应该如何处理它,但我希望如果用户点击一个已经过去的日期,它会立即禁用该按钮。

【问题讨论】:

    标签: html typescript ionic3


    【解决方案1】:

    你可以试试(click)=“passedDate()” (onCurrentDateChanged)="passedDate($event)".

    像这样:

     <calendar [eventSource]="eventSource"
            [calendarMode]="calendar.mode"
            [currentDate]="calendar.currentDate"
            (onCurrentDateChanged)="passedDate($event)"
            (onRangeChanged)="reloadSource(startTime, endTime)"
            (onEventSelected)="onEventSelected($event)"
            (onTitleChanged)="onViewTitleChanged($event)"
            step="30">
    </calendar>
    

    在这样的打字稿中:

    passedDate(selectedDate){
        const date = new Date();
    
        console.log(selectedDate);
    
        if(selectedDate < date){
          this.block = true;
        }
        else { this.block = false;} 
    }
    

    Stackblitz 与工作示例:https://stackblitz.com/edit/ionic-web9ga

    【讨论】:

    • 即使使用 onCurrentDateChanged,我仍然遇到同样的问题。
    • 我用一个有效的堆栈闪电战改变了答案,并用不同的方法调用了你的 passedDate() 方法。希望这行得通。
    • 非常感谢它现在正在工作,很高兴了解这些方法。
    猜你喜欢
    • 2018-05-20
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多