Kendo UI Grid+AngularJS:$scope变量作为数据源的问题



我已经从几乎任何一个线程中尝试了一些关于我的问题的技巧和窍门——我无法完成。

我想用剑道UI网格替换trNgGrid。trNgGrid的工作方式似乎有点不同。它从我称之为$scope.items的$scope变量中获取数据。每当需要刷新数据(筛选、分页、排序事件…)时,网格就会调用一个函数。函数内部,我调用我的sharepoint服务来获取项,然后用sharepoint列表中的新数据覆盖$scope.items。

var getItemsFromSPService = function () {
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {
SPService.loadItems($scope.gridParams).then(function (result) {
$scope.items = result.items;
});
});
};

网格将刷新。遗憾的是,我无法使用rest/soapweb服务——我使用标准的sharepoint客户端上下文方法来获取数据。由于共享点SP.SOD.stuff,我还没有找到从函数返回项的解决方案。我只需要用数据填充一个变量,或者调用另一个函数并将数据发送给它。当然,这都是异步的。

我试图在Kendo UI Grid指令中将$scope.items设置为数据源——当变量更新时,它不会刷新。我试过$scope.grid.refresh,但没有。我试过剑道的可观测阵列,但运气不好。

我认为可能有一种使用网格选项的方法:

dataSource: {
serverFiltering: true,
transport: {
read: function(options) {
options.success(....

但我想不通。

  • 这样我就可以用新数据刷新$scope.items,或者我的函数可以调用任何其他函数并将数据作为参数包括在内——网格也需要刷新。我怎么能告诉它"嘿,$scope.items更新了-显示它!">
  • 我需要IE8的支持
  • 我需要服务器端的排序、过滤、分页-网格需要触发事件,这样我的函数才能刷新数据

有什么解决方案吗?太疯狂了,如此"琐碎"的事情似乎如此棘手:O

非常感谢!

在我的应用程序中,当我想刷新网格时,我使用

$scope.gridName.dataSource.read();

但是您需要在函数读取中实现您的逻辑。就像你在例子中展示的那样。

例如,创建网格的功能可能类似于

$scope.createGrid = function () {
$scope.kendoGridOpMantOptions = {
dataSource: {
schema: {  
// your schema...
},
transport: {
read: function (e) {
// call to service that return data
}
}
}
// More grid configuration
}
}

如果您已经定义了一个函数来读取网格中的数据,则可以使用$scope.gridName.dataSource.read()

关于IE8,我不确定。我在IE上看到了很多关于这个问题的问题。

祝你好运!

最新更新