我正在尝试遵循一些关于刷新剑道网格的建议,比如this。
重要的是,在html中,我有:
<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions">然后在控制器中,我有:
vm.webapiGrid.refresh();注意:我使用的是ControllerAs语法,所以我使用的是"vm“而不是$scope。
我的问题是"vm.webapiGrid“是未定义的。这看起来很简单,但我不确定为什么它是未定义的。
发布于 2015-02-05 07:07:49
找到答案了。我读到的另一种刷新数据源的方法是执行以下操作:
vm.mainGridOptions.datasource.transport.read();这对我不起作用,因为"read“是未定义的。查看我的数据源定义,我看到了原因,read需要一个参数(在本例中是"e"):
vm.mainGridOptions = {
dataSource: {
transport: {
read: function (e) {
task.getAllTasks(vm.appContext.current.contextSetting).
then(function (data) {
e.success(data);
});
},
}
},为了解决这个问题,我将"e“保存在我的作用域中,然后在需要刷新时重用它:
vm.mainGridOptions = {
dataSource: {
transport: {
read: function (e) {
task.getAllTasks(vm.appContext.current.contextSetting).
then(function (data) {
e.success(data);
vm.optionCallback = e;
});
},
}
},然后:
if (vm.optionCallback !== undefined) {
vm.mainGridOptions.dataSource.transport.read(vm.optionCallback);
}问题解决了(我希望)。
发布于 2016-01-14 04:27:27
这是因为您使用的是options对象来触发读取,所以您应该使用网格引用:
<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions">如下所示:
$scope.vm.webapiGrid.dataSource.transport.read();希望这能有所帮助。
发布于 2015-02-05 01:52:55
将id添加到网格并尝试使用它进行刷新。
<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions" id="grid1">在控制器中使用以下命令:
$("#grid1").data('kendoGrid').refresh();
https://stackoverflow.com/questions/28324908
复制相似问题