使用TypeScript扩展Kendo的AgendaView(来自Scheduler)

时间:2014-09-16 04:28:31

标签: kendo-ui typescript

我正在尝试使用typescript来扩展kendo调度程序。

以下是使用JS的工作示例:http://jsbin.com/ucaB/1/edit

但我无法在TypeScript中使用它。

我想我很亲近:

var CustomAgenda = (<any>kendo.ui).AgendaView.extend(
{
    endDate: () =>
    {
        var self = this;
        var d = (<any>kendo.ui).AgendaView.fn.endDate.call(self);
        return (<any>kendo).date.addDays(d, 21);
    }
});

但显然我的'这个'参考是错误的。 kendo打字文件也没有公开kendo.date或AgendaView,这会让事情变得有些混乱。

也许我错了,这肯定会让你觉得难看......

2 个答案:

答案 0 :(得分:1)

在这种特殊情况下,您想要捕获this endDate函数。所以只需使用function而不是()=>

var CustomAgenda = (<any>kendo.ui).AgendaView.extend(
{
    endDate: function()
    {
        var self = this;
        var d = (<any>kendo.ui).AgendaView.fn.endDate.call(self);
        return (<any>kendo).date.addDays(d, 21);
    }
});

此视频可能有助于澄清一些事情:https://www.youtube.com/watch?v=tvocUcbCupA&hd=1

答案 1 :(得分:1)

根据对kendo论坛中另一个问题的回答,我提出了一个更“'typescripty'的方法。它使用datejs,但很容易适应没有工作。

/// <reference path="../../typings/datejs/datejs.d.ts" />

declare module kendo.ui
{
    class AgendaView implements kendo.ui.SchedulerView
    {
        startDate(): IDateJS;
        endDate(): IDateJS;
    }
}

class MonthlyAgendaView extends kendo.ui.AgendaView
{
    endDate(): IDateJS
    {
        var date = this.startDate().clone();
        date.moveToLastDayOfMonth();
        return date;
    }
}