如何从 Dojo gridx detailProvider(Dod 模块)获取此 ref 以声明类

Posted

技术标签:

【中文标题】如何从 Dojo gridx detailProvider(Dod 模块)获取此 ref 以声明类【英文标题】:How to obtain this ref to declaring class from Dojo gridx detailProvider (Dod module) 【发布时间】:2017-11-14 15:51:21 【问题描述】:

使用 Dojo 框架。

我有一个 2 嵌套网格。网格 1 使用带有 detailprovider 的 Dod 在单击展开图标时按需加载详细信息。按下时会打开一个嵌套网格。我需要跟踪两个网格中所做的更改。在声明类中,我有一个数组来跟踪所做的更改。问题是我无法从详细信息提供者访问数组。因为我必须遵守 gridx 稍后调用的协议。我该怎么做才能获得声明类的引用

var myDeclaringClass = declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin], 
    array: [],

    initGrid: function() 
        var grid = new Grid(
            store: store,
            structure: columns,
            modules: [ 
                  moduleClass: Dod,
                  showExpando: true,
                  detailProvider: this.myDetailProvider
            ]
        );

        // .... grid.placeAt() .. grid.startup()
    ,

    myDetailProvider: function(parentGrid, rowId, detailNode, rendered) 
        // construct Nested Grid ...

        // How to obtain this reference here?
        // to access this.array?

        rendered.callback();
        return rendered;
    
    retrun myDeclaring;

编辑: 我也尝试过使用静态变量,例如:

statics:  array: [] 

但是在这里我仍然需要一个实例引用来访问它。

【问题讨论】:

【参考方案1】:

试试这样的

 var myDeclaringClass = declare([_WidgetBase,_TemplatedMixin,_WidgetsInTemplateMixin], 
        array: [],
var globalref : this,//here i'm assigning 'this' i.e. class level ref to the variable

        initGrid: function() 
            var grid = new Grid(
                store: store,
                structure: columns,
                modules: [ 
                      moduleClass: Dod,
                      showExpando: true,
                      detailProvider: this.myDetailProvider
                ]
            );

            // .... grid.placeAt() .. grid.startup()
        ,

        myDetailProvider: function(parentGrid, rowId, detailNode, rendered) 
            // construct Nested Grid ...

            // How to obtain this reference here?
            // to access this.array?
    globalref.array//should give you access to the array
            rendered.callback();
            return rendered;
        
        retrun myDeclaring;
    

【讨论】:

语法“var globalref = this”无效。不工作?

以上是关于如何从 Dojo gridx detailProvider(Dod 模块)获取此 ref 以声明类的主要内容,如果未能解决你的问题,请参考以下文章

dojo gridx 不会从 JSONRest 存储中读取 - 我在这里缺少啥?

如何将小部件添加到 Dojo gridx/Grid 标题?

如何在我的 dojo GridX 中将我的按钮置于我选择的特定列中?

Dojo Gridx 与 JsonStore

Dojo gridx:使用“onAfterRow”禁用“onCellWidgetCreated”?

Dojo Gridx 程序刷新显示没有数据