如何从Angular控制器调用kendo-grid上的refresh()?

时间:2015-02-04 15:19:46

标签: angularjs kendo-ui kendo-grid

我正在尝试按照有关刷新this等剑道网格的几条建议。

关键是我在html中有:

<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions">

然后在控制器中我有:

vm.webapiGrid.refresh();

注意:我使用的是ControllerAs语法,所以我使用的是“vm”而不是$ scope。

我的问题是“vm.webapiGrid”未定义。这看起来很简单,但我不确定为什么它是未定义的。

3 个答案:

答案 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')刷新();