2017-04-19 74 views
1

我不知道是否有可能在jQuery函數中調用打字稿。如果可能的話,什麼是正確的方法來做到這一點?如何在jquery函數中調用打印機函數?

這個我component.ts

getCalendar(){ 
    calendarOptions:Object = { 
    height: 'parent', 
    fixedWeekCount : false, 
    defaultDate: '2017-03-01', 
    editable: true, 
    eventLimit: true, // allow "more" link when too many 

dayclick功能

dayClick: function(date, jsEvent, view) { 
     this.addModal(); **this function is not working** 

     //console.log(jsEvent); 
     // alert('Clicked on: ' + date.format()); 
     // alert('Coordinates: ' + jsEvent.pageX + ',' + jsEvent.pageY); 
     // alert('Current view: ' + view.name); 
     }, 

    success: function(doc) { 
     var events = []; 
     $(doc).find('event').each(function() { 
      events.push({ 
       title: $(this).attr('title'), 
       start: $(this).attr('start') // will be parsed 
      }); 
     }); 
    }, 

    eventAllow: function(dropLocation, draggedEvent) { 
     if (draggedEvent.id === '999') { 
     return dropLocation.isAfter('2017-03-22'); // a boolean 
     } 
     else { 
     return true; 
     } 
    } 
    }; 

    ngOnInit() { 
     this.getTotalEmployee(); 
     this.getComputeAbsent(); 
     this.getTotalAttendance(); 
     // this.showEvent(); 
     this.calendarOptions['events'] = this.events; 

    } 



    public catchError(error: any) { 
     let response_body = error._body; 
      let response_status = error.status; 

      if(response_status == 500){ 
      this.error_title = 'Error 500'; 
      this.error_message = 'The given data failed to pass validation.'; 
      } else if(response_status == 200) { 
      this.error_title = ''; 
      this.error_message = ''; 
      } 

     } 

    showEvent(){ 
     this._event_service.getEventList() 
     .subscribe(
      data => { 
      this.events = Array.from(data); 
      this.calendarOptions['events'] = this.events; 
      console.log(this.calendarOptions['events']); 

      }, 
      err => this.catchError(err) 

    ); 
     } 


    getEvents() { 
     this._event_service.getEvents().subscribe(
     data => { 
      this.eventsList = Array.from(data); 
      this.calendarOptions['events'] = this.eventsList; 

     }, 
     err =>{} 
    ); 
    } 

這是我認爲我嘗試在jQuery函數調用以上模態函數

addModal() { 
    let disposable = this.modalService.addDialog(EventComponent, { 
      title:'Add Event' 
      }).subscribe((isConfirmed)=>{ 
     }); 
    } 
    getTotalAttendance() { 
     let pre; 
     this._attend_service.getTotalPresent().subscribe(
     data => { 
      pre = Array.from(data); 
      this.present = pre[0].total_present; 

     }, 
     err =>{} 
    ); 
    } 

    getTotalEmployee() { 
     let totalEmp; 
     let filter = "Active"; 
     this._attend_service.getTotalEmp(filter).subscribe(
     data => { 
      totalEmp = data; // fetced record 
      this.total_emp = totalEmp[0].total_employee; 

     }, 
     err =>{} 
    ); 
    } 

    getComputeAbsent(){ 
     let employee = parseInt(this.employee); 
     let attendance = parseInt(this.attendance); 

      this.totalAbsent = employee - attendance; 


     } 

回答

2

如果您不需要封閉this

您可以使用箭頭功能:

dayClick: (date, jsEvent, view)=> { 
      this.addModal(); 
      } 

或者你可以存儲在一個變量外this後來用它

var self = this; // store here 
dayClick: function(date, jsEvent, view) { 
      self.addModal(); // use here 
      } 

編輯:

getCalendar(){ 
    var self = this; // ****** 
    calendarOptions:Object = { 
    height: 'parent', 
    fixedWeekCount : false, 
    defaultDate: '2017-03-01', 
    editable: true, 
    eventLimit: true, // allow "more" link when too many 
    dayClick: function(date, jsEvent, view) { 
     self.addModal(); // ********* 
     }, 

    success: function(doc) { 
     var events = []; 
     $(doc).find('event').each(function() { 
      events.push({ 
       title: $(this).attr('title'), 
       start: $(this).attr('start') // will be parsed 
      }); 
     }); 
    }, 

    eventAllow: function(dropLocation, draggedEvent) { 
     if (draggedEvent.id === '999') { 
     return dropLocation.isAfter('2017-03-22'); // a boolean 
     } 
     else { 
     return true; 
     } 
    } 
    }; 
+0

@AlyssaAndrea如果你可以共享整個'dayClick'功能,我將修改我的答案更精確。喜歡裏面哪個角度的方法? – echonax

+0

即時通訊希望你可以讓我這個 –

+0

@AlyssaAndrea沒問題,但你可以分享圍繞'dayClick'的代碼的外部方法嗎? – echonax