2014-09-10 32 views
0

我想讓我的網格(由角度指令創建)填充數據,但它不是填充。angularjs劍道數據源數據長度爲零

這裏是我的網聲明:

<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是零。

我錯過了什麼?

+0

的原因,我結合到陣列(和而不是定義了傳輸和讀取方法調用的數據源)是因爲dayTypes數組屬性所屬的viewModel具有綁定到頁面上其他控件的整個lotta其他屬性。因此,這不是數據源需要關閉並通過http調用檢索自己的數據的情況。 – 2014-09-10 14:04:28

回答

1

什麼你要找的是setDataSource方法:

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

+0

這樣做!夥計你搖滾!感謝mil' – 2014-09-10 16:58:15

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 
      } 
     ] 
    } 
};