如何在jquery函数中调用typescript函数?

时间:2017-04-19 04:41:40

标签: javascript jquery angular typescript

我不知道是否可以在jquery函数中调用typescript。如果有可能,采用什么方法是正确的?

  

这是我的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;


      }

1 个答案:

答案 0 :(得分:3)

如果您不需要随附的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;
      }
    }
  };