-1

我可能过于复杂了,但我有以下情况,我需要查看“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);
                        }
                    }
                })
            );
        }
    });
});
4

2 回答 2

1

它看起来像matching一个数组,因此您需要在特定MyCalendarPoints对象的属性可用之前通过索引访问它。

matching[0].ResourceScheduleTypeId // MyCalendarPoints

不是

matching.ResourceScheduleTypeId // MyCalendarPoints[]

我从你的演员表中收集到了这一点:

<MyCalendarPoints[]>
于 2012-11-06T14:53:32.807 回答
1

如果你为 jQuery 和 jQuery-UI 添加定义,你可以去掉所有的any-casts。

///<reference path='jquery-1.8.d.ts'/>
///<reference path='jqueryui-1.9.d.ts'/>

你也需要改变

$(<any>data.CalendarPoints).each(

$(data.CalendarPoints).each(() =>

因为.each()需要一个函数。

您可以.d.tsBoris Yankov 的 github上找到这些文件。

于 2012-11-06T22:53:24.650 回答