我如何获得房产?

时间:2012-11-06 14:45:44

标签: typescript

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

2 个答案:

答案 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个文件。