一尘不染

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

angularjs

我正在尝试遵循一些建议来刷新诸如this的剑道网格。

关键是在html中,我有:

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

然后在控制器中,我有:

vm.webapiGrid.refresh();

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

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


阅读 241

收藏
2020-07-04

共1个答案

一尘不染

找到了答案。刷新我所了解的数据源的另一种方法是执行以下操作:

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);
}

问题解决了(我希望)。

2020-07-04