Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在tablator中动态实现嵌套表_Javascript_Typescript_Callback_Tabulator - Fatal编程技术网

Javascript 如何在tablator中动态实现嵌套表

Javascript 如何在tablator中动态实现嵌套表,javascript,typescript,callback,tabulator,Javascript,Typescript,Callback,Tabulator,我试图在tablator中实现嵌套表,其中数据可以嵌套到n个级别。 我遇到的问题是分配给rowFormatter的函数无法看到createTable()方法。如何允许回调函数查看createTable()函数或类中的其他函数 private createTable(element: HTMLDivElement,jsonFileContents, schemaId: string): Tabulator { var table = new Tabulator(this.tab, {

我试图在tablator中实现嵌套表,其中数据可以嵌套到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, jsonFileContents, schema.guid); //<---HERE
          });
        }
      }      
    });
  }
private-createTable(元素:htmldevelment、jsonFileContents、schemaId:string):制表器{
var table=新制表器(this.tab{
列:this.buildHeaders(jsonFileContents、schemaId),
数据:this.buildRows(jsonFileContents,jsonFileContents.schema.find(s=>s.parent==null.guid),
rowFormatter:函数(行){
var childrenSchemas=jsonFileContents.schemas.filter(s=>s.parent==row[“schemaId”]);
if(儿童模式){
childrenSchemas.forEach(schema=>{
var holderEl=document.createElement(“div”);
var tabele=document.createElement(“div”);
附肢幼体(表1);
row.getElement().appendChild(holderEl);

var subTable=this.createTable(tablel,jsonFileContents,schema.guid);//您遇到的问题是因为在
行格式化程序的上下文中,此
引用了制表器表对象

因此,您可以在定义行格式化程序回调时使用arrow函数,这将保留父级的作用域:

rowFormatter:(行)=>{
}
或者您可以将
this
的范围存储在不同的变量中,让我们调用它
self
,然后在回调中使用它:

private-createTable(元素:htmldevelment、jsonFileContents、schemaId:string):制表器{
var self=这个;
var table=新制表器(this.tab{
rowFormatter:函数(行){
self.createTable();
}
});
}