【问题标题】:Referencing fields in a custom event template for Kendo Scheduler在 Kendo Scheduler 的自定义事件模板中引用字段
【发布时间】:2015-06-26 22:29:08
【问题描述】:

这是我的数据集:

dataSource: [
    {
        title: "Test",
        start: new Date("2015/6/13 6:00"),
        end: new Date("2015/6/13 7:30"),
        availableServices: [1]
    }
],
resources: [
    {
        field: "availableServices",
        title: "Available Services",
        dataSource: [
            { value: 1, text: "On Demand", color: "#e6f1df" },
            { value: 2, text: "Patient Scheduled", color: "#f1e2ed" },
            { value: 3, text: "Admin Scheduled", color: "#fef1de" },
            { value: 4, text: "Unavailable/Blocked", color: "#c6c3c3" }
        ],
        multiple: true
    }
]

这是我的自定义模板:

<script id="block-template" type="text/x-kendo-template">
    <div class="event-block  #if(availableServices=='On Demand'){# on-demand #}else{# meep #}#" >
        <p>
            #: kendo.toString(start, "hh:mm") # - #: kendo.toString(end, "hh:mm") #
        </p>
        <span>
            #: title #
        </span>
        <span>
            #: availableServices #
        </span>
    </div>
</script>

它输出的是这样的:

<div class="event-block   meep ">
    <p>
        06:00 - 07:30
    </p>
    <span>
        Test
    </span>
    <span>
        [object Object]
    </span>
</div>

因此,我尝试在包含 div 中添加类的部分基于选择了“可用服务”字段,但该部分不起作用。无论如何,它只是输出 else 选项“meep”。

我试图列出在内容区域中选择了哪些“可用服务”字段的部分也不起作用——它只是输出“[object Object]”

任何帮助将不胜感激!

【问题讨论】:

    标签: kendo-ui kendo-scheduler


    【解决方案1】:

    你是这样做的,你需要把条件改成这样,就像一个数组一样

    #if(availableServices[0]==1){#on-demand#}else{#meep#}#

    这是模板代码:

    <script id="block-template" type="text/x-kendo-template">
    <div class="event-block #if(availableServices[0]==1){#on-demand#}else{#meep#}#">
        <p>
            #: kendo.toString(start, "hh:mm") # - #: kendo.toString(end, "hh:mm") #
        </p>
        <span>
           title : #: title #,
        </span>
        <span>
           available services : # for(var i=0, length = availableServices.length; i<length; i++){# #: availableServices[i]# #} #
        </span>
    </div>
    

    JS 代码:

    $("#scheduler").kendoScheduler({
      date: new Date("2015/6/13"),
      eventTemplate: $("#block-template").html(),
      dataSource: [
        {
            title: "Test 1",
            start: new Date("2015/6/13 6:00 AM"),
            end: new Date("2015/6/13 7:30 AM"),
            availableServices: [1,2]
        },
        {
            title: "Test 2",
            start: new Date("2015/6/13 7:00 AM"),
            end: new Date("2015/6/13 8:30 AM"),
            availableServices: [2,3,4]
        }
      ],
      resources: [
        {
            field: "availableServices",
            title: "Available Services",
            dataSource: [
                { value: 1, text: "On Demand", color: "#e6f1df" },
                { value: 2, text: "Patient Scheduled", color: "#f1e2ed" },
                { value: 3, text: "Admin Scheduled", color: "#fef1de" },
                { value: 4, text: "Unavailable/Blocked", color: "#c6c3c3" }
            ],
            multiple: true
        }
      ]
    });
    

    DEMO

    【讨论】:

    • 啊,是的,我知道它是如何工作的。但是,之所以有这样的数据:[1] 和 [1,2,3] 是因为这些将是用户可以选择多个复选框的复选框。如这里的“多种资源”示例:docs.telerik.com/kendo-ui/web/scheduler/resources
    • 非常感谢,我认为这会很有帮助
    • 一件事,@machun 在你设置的demo中,当你双击一个区域添加一个新事件时,其他所有事件都消失了。有什么想法吗?我尝试为模型 ID 添加一些架构信息,但没有解决。
    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多