【问题标题】:Kendo Scheduler Won't Take dataSourceKendo 调度程序不会获取数据源
【发布时间】:2016-11-26 14:31:58
【问题描述】:

我有一个如下所示的 JSON 数组:

var mockArr = [ 
{activity: "That One Activity", due_date: "07/22/2016", address: "22 Jump Ln", id: "42"},
{activity: "That Other Activity", due_date: "07/25/2015", address: "123 Fake St", id: "43"}
];

我正在尝试将它绑定到一个 kendo Scheduler 小部件,其配置如下:

$("#scheduler").kendoScheduler({
            date: new Date(),
            height: 100,
            views: [
                {type: "day"},
                {type: "month", selected: true},
                {type: "agenda", selectedDateFormat: "{0:ddd, M/dd/yyyy} - {1:ddd, M/dd/yyyy}"}
            ],
            mobile: "phone",
            timezone: "Etc/UTC",
            allDaySlot:true,
            editable: false,
            dataSource: {
                data: mockArr,
                schema: {
                    model: {
                        id: "taskId",
                        fields: {
                            taskId: { from: "id", type: "number" },
                            title: { from: "activity" },
                            start: { type: "date", from: "due_date" },
                            end: {type: "date", from: "due_date"},
                            description: { from: "address" }
                        }
                    }
                }
            }
    });

当我运行 Web 小程序时,控制台会显示“TypeError: e is null”,然后我得到 a page that looks like this

但是当我将 mockArr 和引用模型替换为静态 SchedulerEvent 时,我得到了一个工作调度程序,例如:

var event = new kendo.data.SchedulerEvent({
    id: 1,
    title: "test event",
    start: new Date("2016/7/22"),
    end: new Date("2016/7/22")
});

为什么调度器不喜欢我的数据源?

【问题讨论】:

    标签: javascript kendo-ui kendo-mobile kendo-scheduler


    【解决方案1】:

    您遇到此问题的原因有几个。

    • 页面之所以和你提供的图片一样,是因为你指定了height: 100。去掉这行kendo framework会自动处理,以后可以根据需要指定。
    • 您的 Json 数组需要正确格式化。查看提供的代码中的 sn-p
    • 数据源中的数据参数需要一个 JavaScript 对象,您需要使用此 data:JSON.parse(mockArr),
    • 对其进行解析
    • 我注意到 kendo 不允许将字段中的开始/结束参数绑定到与您使用的 Due_date 相同的名称,因此需要将其更改为
      start:{ type: "date", from: “截止日期” }, 结束:{类型:“日期”,来自:“due_date1”},

    除此之外,您的代码工作正常,我已经对其进行了测试。

    控制台错误“web 小程序控制台吐出”TypeError: e is null”听起来是特定于 java 的,我假设您使用的是 java,这可能与 java 框架有关。

    这是您的工作代码的实时版本

    导航到Kendo UI online Editor并删除预填充的代码并粘贴下面提供的代码sn-p。

    <!DOCTYPE html>
    <html>
    <head>
        <base href="http://demos.telerik.com/kendo-ui/scheduler/index">
        <style>html { font-size: 14px; font-family: Arial, Helvetica, sans-serif; }</style>
        <title></title>
        <link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.2.714/styles/kendo.common-material.min.css" />
        <link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.2.714/styles/kendo.material.min.css" />
        <link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.2.714/styles/kendo.default.mobile.min.css" />
    
        <script src="//kendo.cdn.telerik.com/2016.2.714/js/jquery.min.js"></script>
        <script src="//kendo.cdn.telerik.com/2016.2.714/js/kendo.all.min.js"></script>
        <script src="//kendo.cdn.telerik.com/2016.2.714/js/kendo.timezones.min.js"></script>
    </head>
    <body>
    <div id="example">   
        <div id="scheduler"></div>
    </div>
    
    <script>
    
      var mockArr ='[{"activity":"That One Activity","due_date":"07/22/2016","due_date1":"07/22/2016","address":"22 Jump Ln","id":"42"},{"activity": "That Other Activity", "due_date": "07/25/2016","due_date1":"07/25/2016","address": "123 Fake St", "id": "43"}]';
    
    
    
    
    $("#scheduler").kendoScheduler({
                date: new Date(),           
                views: [
                    {type: "day"},
                    {type: "month", selected: true},
                    {type: "agenda", selectedDateFormat: "{0:ddd, M/dd/yyyy} - {1:ddd, M/dd/yyyy}"}
                ],          
    
                allDaySlot:true,
                editable: true,
                dataSource: {
                    data:JSON.parse(mockArr),
                    schema: {
                        model: {
                            id: "taskId",
                            fields: {
                                taskId: { from: "id", type: "number" },
                                title: { from: "activity" },
                                 start: { type: "date", from: "due_date" },
                                 end: { type: "date", from: "due_date1" },
                                description: { from: "address" }
                            }
                        }
                    }
                }
        });
    
    
    
    </script>
    
    
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 2016-10-05
      • 2014-09-08
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多