代码之家  ›  专栏  ›  技术社区  ›  Baldráni

如何以字符串的形式调用函数?

  •  0
  • Baldráni  · 技术社区  · 6 年前

    所以我知道这个问题已经被问过几次了,但是我找不到一个适合我的解决方案,我也不明白这是如何正常工作的。

    这是涉及的功能:

    import form from "./form"; //return some html
    function changePage(e){
        console.log(e.target.dataset.component) // equal "form"
        //loadComponent(form) => is working 
        loadComponent(eval(e.target.dataset.component)) // => form is not defined    
    }
    
    function loadComponent(name)
    {
        const wtv = name()
        document.getElementById('app').append(wtv)
    }
    

    那我怎么能打电话呢 e.target.dataset.component ?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Davi    6 年前

    最肯定的是,您需要从标签到函数的映射:

    import form from "./form"; //return some html
    
    const datasetToComponent = {
      'form': form
    };
    
    function changePage(e){
      if (datasetToComponent[e.target.dataset.component]) {
        loadComponent(datasetToComponent[e.target.dataset.component]);
      }  
    }
    
    function loadComponent(name) {
      const wtv = name()
      document.getElementById('app').append(wtv)
    }