angularjs kendo数据源数据长度为零

时间:2014-09-10 13:32:06

标签: angularjs kendo-ui kendo-grid

我正在尝试使用数据填充我的网格(由angular指令创建),但它没有填充。

这是我的网格声明:

<div id="dayTypesGrid" kendo-grid k-options='dayTypesGridOptions'></div>

这是我的角度控制器的代码:

$scope.dayTypesGridOptions = {
    schema: {
        model: {
            id: "description",
            fields: {
                description: { editable: false, nullable: false },
                numberOfDays: { type: "number", validation: { required: true, min: 0} }
            }
        }
    },
    columns: [{
        field: "description",
        title: "Day Type"
    }, {
        field: "numberOfDays",
        title: "Number of Days"
    }]
};

到目前为止一切顺利。网格被实例化,我看到两列。我的角度控制器执行我的数据获取调用,并将结果存储在数组$ scope.viewModel.dayTypes中。 使用浏览器开发工具,我可以看到$ scope.viewModel.dayTypes确实包含7条记录的数组。 我现在想在网格中显示这7条记录,我按如下方式显示:

var ds = new kendo.data.DataSource({data:$ scope.viewModel.dayTypes}); $('#dayTypesGrid')。data('kendoGrid')。dataSource = ds;

在最后一行代码之后,我的网格仍然是空的。使用浏览器开发工具,我看到ds.data.length为零。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

您正在寻找的是setDataSource方法:

$('#dayTypesGrid').data('kendoGrid').setDataSource(ds);

答案 1 :(得分:0)

以下是我在项目中的表现方式,这对我有用。您的里程可能会有所不同,因为您使用的是数据而不是传输URL,但我注意到您的网格配置结构与我的有点不同。例如,我在创建数据源时定义了架构:

var datasource = new kendo.data.DataSource({
            transport: {
                read: {
                    url: "url/to/my/service",
                    dataType: "json"
                }
            },
            schema: {
                data: "results"
            }
        };

    var gridConfig: {
        dataSource: dataSource,
        rowTemplate: $templateCache.get("modules/reports/row.html"),
        height: 500,
        scrollable: true,
        groupable: true,
        filterable: true,
        pageable: true,
        reorderable: true,
        sortable: true,
        resizable: true,
        "columns": [
            {
                "field": "status",
                "title": "Status",
                "width": 200
            },
            {
                "field": "actions",
                "title": "Actions",
                "width": 200
            }
        ]
    }
};