简体   繁体   English

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

[英]how to call a typescript function inside a jquery function?

I don't know if it is possible to call a typescript inside a jquery function.我不知道是否可以在 jquery 函数中调用打字稿。 if it is possible, what is the right method to do it?如果可能,正确的方法是什么?

this my component.ts这是我的 component.ts

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

dayclick function日点击功能

    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 =>{}
      );
    }

this is my modal function that im trying to call in jquery function above这是我试图在上面的 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;


      }

If you don't need the enclosed this如果您不需要随附的this

You can use the arrow function:您可以使用箭头函数:

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

Or you can store the outer this in a variable and use it later或者您可以将外部this存储在变量中并稍后使用

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

Edit:编辑:

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;
      }
    }
  };

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM