我正在尝试遵循一些建议来刷新诸如this的剑道网格。
关键是在html中,我有:
<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions">
然后在控制器中,我有:
vm.webapiGrid.refresh();
注意:我使用的是ControllerAs语法,所以我使用的是“ vm”而不是$ scope。
我的问题是“ vm.webapiGrid”未定义。这似乎很简单,但是我不确定为什么未定义。
找到了答案。刷新我所了解的数据源的另一种方法是执行以下操作:
vm.mainGridOptions.datasource.transport.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); }
问题解决了(我希望)。