如何解决如何在制表器中动态实现嵌套表
我正在尝试在制表器中实现嵌套表,其中数据可以嵌套到 n 级。
我遇到的问题是分配给 rowFormatter
的函数无法看到 createTable()
方法。如何让回调函数看到 createTable()
函数或我班级中的其他函数?
private createTable(element: HTMLdivelement,jsonFileContents,schemaId: string): Tabulator {
var table = new Tabulator(this.tab,{
columns: this.buildHeaders(jsonFileContents,schemaId),data: this.buildrows(jsonFileContents,jsonFileContents.schema.find(s => s.parent == null).guid),rowFormatter:function(row) {
var childrenSchemas = jsonFileContents.schemas.filter(s => s.parent == row["schemaId"]);
if(childrenSchemas){
childrenSchemas.forEach(schema => {
var holderEl = document.createElement("div");
var tableEl = document.createElement("div");
holderEl.appendChild(tableEl);
row.getElement().appendChild(holderEl);
var subTable = this.createTable(tableEl,schema.guid); //<---HERE
});
}
}
});
}
解决方法
您遇到的问题是因为在 rowFormatter
this
的上下文中是指 Tabulator 表对象。
因此您可以在定义行格式化程序回调时使用箭头函数,这将保留父级的范围:
rowFormatter:(row) => {
}
或者您可以将 this
的范围存储在不同的变量中,让我们调用它 self
然后在回调中使用它:
private createTable(element: HTMLDivElement,jsonFileContents,schemaId: string): Tabulator {
var self = this;
var table = new Tabulator(this.tab,{
rowFormatter:function(row) {
self.createTable();
}
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。