我正在尝试使用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,这会让事情变得有些混乱。
也许我错了,这肯定会让你觉得难看......
答案 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;
}
}