我可能过于复杂了,但我有以下情况,我需要查看“ResourceScheduleType”是否等于某个数字。我认为代码中的注释最能说明我正在尝试做什么。出于某种原因,我的“匹配”变量并没有给我我需要的属性..我也想放弃使用jQuery grep片段。
class MyCalendarVM {
CalendarPoints: MyCalendarPoints[];
}
class MyCalendarPoints {
ResourceScheduleType: number;
aDate: string;
}
class MyType {
MyName: string;
}
$(document).ready(() => {
$.get("/Calendar/GetMonthCalendar", null, (data: MyCalendarVM) => {
if (data.CalendarPoints.length == 0) {
(<any>$('#date')).datepicker();
} else {
$(<any>data.CalendarPoints).each(
(<any>$("#date")).datepicker({
beforeShowDay: function (date) {
var result = new Array(true, '', null);
var matching = <MyCalendarPoints[]>$.grep(data.CalendarPoints, function (event) {
return event.Date.valueOf() === date.valueOf();
}, false);
//TODO: make determination for blue or yellow dot
if (matching.length) {
var classes = "";
// if matching.ResourceScheduleTypeId == 3
// classes += "yellowDot";
// if matching.ResourceScheduleTypeId == 1 || 2 || 9
// classes += " blueDot";
result = [true, classes, null];
}
return result;
},
onSelect: function (dateText) {
var date,
selectedDate = new Date(dateText),
i = 0,
event = null;
while (i < data.CalendarPoints.length && !event) {
date = data.CalendarPoints[i].aDate;
if (selectedDate.valueOf() === date.valueOf()) {
event = data.CalendarPoints[i];
}
i++;
}
if (event) {
alert(event.Title);
}
}
})
);
}
});
});
答案 0 :(得分:1)
看起来matching
是一个数组,因此您需要在特定MyCalendarPoints
对象的属性可用之前通过索引访问它。
matching[0].ResourceScheduleTypeId // MyCalendarPoints
不
matching.ResourceScheduleTypeId // MyCalendarPoints[]
我从你的演员那里收集了这个:
<MyCalendarPoints[]>
答案 1 :(得分:1)
如果你为jQuery和jQuery-UI添加定义,你可以摆脱所有any
- 强制转换。
///<reference path='jquery-1.8.d.ts'/>
///<reference path='jqueryui-1.9.d.ts'/>
您还需要更改
$(<any>data.CalendarPoints).each(
到
$(data.CalendarPoints).each(() =>
因为.each()
需要一个函数。
您可以在Boris Yankov's github找到.d.ts
个文件。