首页 > 解决方案 > 使用 java 脚本创建的锚标记调用指向成功或失败的 API 调用

问题描述

我有一个按钮,可以将其作为锚标记或链接。单击按钮时在代码下方添加。

download() {
        let link = document.createElement('a');
        document.body.appendChild(link);
        //link.href = this.downloadFile; // can i call a function here which has API invoking?
        link.onclick = this.downloadFile;
        link.click();
}
downloadFile() { 
        this.Service.download(
            id
        ).subscribe((data: any) => {
        },
        (error: any) => {

        });
    }

如何使用创建的锚标记调用此函数?

标签: javascriptangularanchorcreateelement

解决方案


不要使用 link.onclick,而是使用链接上的 addEventListener 方法来注册您的下载方法:

    function download() {

      var link = document.createElement('a'); 
      document.body.appendChild(link);

      link.addEventListener('click', this.downloadFile);
      link.click();
    }

    function downloadFile() { 
        console.log("Here we go");
    }

但是要小心,因为如果您的方法 downloadFile 是类方法,则 downloadFile 函数中的“this”将未定义或等于窗口全局对象,您将不得不使用 link.addEventListener('click', this.downloadFile.bind(this));


推荐阅读