使用 Dojo 框架。
我有一个 2 嵌套网格。 Grid 1 使用带有 detailprovider 的 Dod 在单击展开图标时按需加载详细信息。按下时会打开一个嵌套的网格。我需要跟踪两个网格中所做的更改。在声明类中,我有一个数组来跟踪所做的更改。问题是我无法从 detailprovider 访问数组。因为我必须遵守 gridx 稍后调用的协议(protocol)。我该怎么做才能获得对声明类的引用
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: [] }
但在这里我仍然需要一个实例引用来访问它。
最佳答案
尝试这样的事情
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;
}
关于javascript - 如何从 Dojo gridx detailProvider(Dod 模块)获取声明类的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47289956/