我正在尝试按照有关刷新this等剑道网格的几条建议。
关键是我在html中有:
<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions">
然后在控制器中我有:
vm.webapiGrid.refresh();
注意:我使用的是ControllerAs语法,所以我使用的是“vm”而不是$ scope。
我的问题是“vm.webapiGrid”未定义。这看起来很简单,但我不确定为什么它是未定义的。
答案 0 :(得分:11)
找到答案。刷新我读过的数据源的另一种方法是执行以下操作:
vm.mainGridOptions.datasource.transport.read();
这对我来说并不适合作为&#34;阅读&#34;未定义。看看我的数据源定义,我看到了原因,读取需要一个参数(在这种情况下&#34; e&#34;):
vm.mainGridOptions = {
dataSource: {
transport: {
read: function (e) {
task.getAllTasks(vm.appContext.current.contextSetting).
then(function (data) {
e.success(data);
});
},
}
},
要解决,我保存了#34; e&#34;在我的范围内,然后在我想要刷新时重复使用它:
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);
}
问题解决了(我希望)。
答案 1 :(得分:3)
它是因为您使用options对象来触发读取,您应该使用网格引用:
<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions">
如:
$scope.vm.webapiGrid.dataSource.transport.read();
希望有所帮助。
答案 2 :(得分:-3)
将ID添加到网格并尝试使用它进行刷新。
<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions" id="grid1">
在控制器中使用它:
$( “#GRID1”)数据( 'kendoGrid')刷新();