为什么我的JSON在Kendo UI中显示为Datasource.options.data而不是Datasource.data?

时间:2014-07-24 13:04:16

标签: json angularjs kendo-ui kendo-grid

剑道新手,我很难让我的JSON数据显示在Kendo Grid中。如果我通过普通的html表引用我的$ scope.actionData,我可以在页面中查看它。

最终我试图完成this

列标题显示在页面上,但下面没有数据。

当我尝试填充kendo网格时,我可以通过DataSource中的Chrome Kendo UI Inspector看到我期待的数据 - >选项 - >数据阵列,但我无法弄清楚如何让它在页面上显示,而且它没有填充数据源 - >数据数组。我已尝试在angular-kendo页面上完成示例,但没有运气。我也尝试在html的div下添加各种元素/标签,但我回到了我开始的地方。

如果我需要添加任何其他内容,请告诉我。非常感谢任何帮助填充这一点。提前谢谢!

HTML:

<div kendo-grid k-data-source="gridOptions"></div>

控制器:

var actionHistoryControllers = angular.module('actionHistoryControllers', ['kendo.directives'])
        .controller('ActionHistoryCtrl', ['$scope', '$routeParams', 'ActionHistory',
             function ($scope, $routeParams, ActionHistory) {
                 $scope.actionData = ActionHistory.query({ appid: $routeParams.appid },
                       function (data) {
                           $scope.error = false;
                           $scope.errorMsg = "";
                       },
                       function (data) {
                           $scope.error = true;
                           $scope.errorMsg = "<strong>Unable to load!</strong> Please reload the page.";
                       });

                 $scope.gridOptions = {
                     data: $scope.actionData,
                     columns: [
                         {field: "UserID", title: "User ID"},
                         {field: "ActionText", title: "Action Text"}]
                 }
              }])

Chrome Kendo UI Inspector:

Data source
   options: Object{9} 
   data: Array[3] 
      0: Object{17} 
        ActionHistoryID: 315911
        ActionText: "System"
        ...

1 个答案:

答案 0 :(得分:0)

请替换以下内容:

$scope.gridOptions = {
                     data: $scope.actionData,
                     columns: [
                         {field: "UserID", title: "User ID"},
                         {field: "ActionText", title: "Action Text"}]
                 }

以下内容:

$scope.gridOptions = {
    dataSource: {
                    transport: {
                        read: function (o) {                        
                            o.success($scope.actionData);
                        }
                    },
                     columns: [
                         {field: "UserID", title: "User ID"},
                         {field: "ActionText", title: "Action Text"}]
                }
}