类之间的TypeScript回调

塔加里安

在Typescript中,我正在尝试从角度控制器向角度服务发送回调,但是它不起作用。我使用了Chrome开发工具,并在回调函数的顶部添加了一个断点。永远不要碰到断点。回调函数永远不会触发。

我正在使用fullCalendar jQuery控件。我希望在CalendarController中定义Calendar_LeftClick()方法(以便我可以访问作用域和其他变量),但我希望CalendarService实际调用日历上的事件单击。

CalendarService.ts构建我的fullCalendar jQuery控件。“哦,他应该使用指令!而且他正在将jQuery与Angular一起使用?tsk tsk” -是的,我稍后将构建指令。现在,我需要弄清楚如何使用TypeScript进行回调。)

public createCalendar(eventList): void {
    $('#calendar').fullCalendar({
        height: 'auto',
        events: eventList,
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,basicDay'
        },
        editable: true,
        droppable: true,
        selectable: true,
        eventClick: this.calendarEventClick
    });
}

public registerClickObserver(callback): void {
    if (this._observerCallbacks == null)
        this._observerCallbacks = [];

    this._observerCallbacks.push(callback);
}

public calendarEventClick(event, jsEvent, view): void {
    this._currentId = event.id;
    this._currentEvent = event;

    angular.forEach(this._observerCallbacks, (callback) => {
        callback(event, jsEvent, view);
    });
}

在CalendarController.ts中,我已完成以下操作...

constructor(...) {
    this.CalendarService.registerClickObserver(() => this.Calendar_LeftClick);
}

public Calendar_LeftClick(event: any, jsEvent: any, view: any) {
    //...other code here
    this.Calendar_CreateTooltip(jsEvent);
}

public Calendar_CreateTooltip(jsEvent: any) {
    if (this.tooltip != null) this.tooltip.destroy();
    this.tooltip = null;
    this.tooltip = $('<div/>').qtip( "option", {
        prerender: true,
        content: {
            text: ' ',
            title: {
                button: true
            }
        },
        position: {
            my: 'bottom center',
            at: 'top center',
            target: 'mouse'
        },
        style: {
            classes: 'qtip',
            width: 300
        },
        show: false,
        hide: false
    }).qtip('api');

    this.tooltip.set({
        'content.text': (api) => {
            return this.$compile($('.tooltip-content').html())(this.$scope);
        }
    }).show(jsEvent);
}

最终,我将完成所有这些操作以显示我的qtip2控件(这是我在Calendar_CreateTooltip中所做的事情)。我曾经在常规JavaScript中使用过此功能,但是现在我改用TypeScript却无法使用。我究竟做错了什么?

那将是烧瓶

注册的() => this.Calendar_LeftClick回调返回一个控制器方法(具有丢失的参数和上下文,因为该方法未绑定)。虽然应该调用它。它应该是

this.CalendarService.registerClickObserver((...args) => this.Calendar_LeftClick(...args));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章