我正在从后端获取剑道网格数据并将其设置为剑道网格选项alignedProcessesToRiskGridOptions
现在数据显示在网格中,但是我还想获取原始数据以编写一些逻辑,如何从dataSource获取数据或直接调用RiskService
AngularJs工厂并将其分配给var gridData
?
ctrl.js
$scope.alignedProcessesToRiskGridOptions = RiskService.alignedProcessToRiskGrid();
$scope.alignedProcessesToRiskGridOptions.dataSource = RiskService.getAlignedProcessesToRiskGridDataSource($stateParams.riskId);
gridData = $scope.alignedProcessesToRiskGridOptions.dataSource.data();
console.log('RISK DATA', gridData);
factory.js
getAlignedProcessesToRiskGridDataSource: function(riskKey) {
var countNew = 0;
return new kendo.data.DataSource({
type: 'json',
serverPaging: true,
serverSorting: true,
serverFiltering: true,
transport: {
read: function(options) {
var gridSearchObject = {
skip: options.data.skip,
take: options.data.take,
pageSize: options.data.pageSize,
page: options.data.page,
sorting: options.data.sort,
filter: options.data.filter
};
return $http.post(
'app/risk/rest/allAlignedProcessesToRisk/' + riskKey, gridSearchObject).success(
function(data) {
countNew = data.totalCount;
options.success(data.resultDTOList);
});
}
},
最佳答案
根据kendo文档,至少有两种方法可以从数据源获取实际数据。
There is the view
method
返回与当前页面,过滤器,
排序和分组配置。与数据方法比较,它将
如果本地数据绑定和分页是,则从所有页面返回数据项
用过的。
There is the data
method
获取或设置数据源的数据项。
如果数据源绑定到远程服务(通过传输)
选项),数据方法将返回服务响应。每个项目
从响应包装在kendo.data.ObservableObject或
kendo.data.Model(如果设置了schema.model选项)。
如果数据源绑定到JavaScript数组(通过数据)
选项),数据方法将返回该数组的项目。每一个
数组中的项目包装在kendo.data.ObservableObject中,或者
kendo.data.Model(如果设置了schema.model选项)。
由于使用的是data
方法,因此应该能够通过结果对象的属性和方法访问数据。
您应该能够通过length
检查gridData
的console.log(gridData.length)
,以及通过数组索引console.log(gridData[0])
检查数据中的任何单个对象。此外,您还应该能够通过console.log(gridData[0].firstProperty)
检查对象的属性。
如果这些都不起作用,则可能是因为未使用query
或fetch
的上下文检查数据源。如果您check out this example,您将看到在fetch
函数内部正在评估数据。
您可以找到有关the Kendo DataSource in their online documentation的更多信息。
最后,您可以在this question about the kendo grid中看到我使用Kendo数据源的不同方式的示例。