通过System.js加载JS时如何通过onclick调用函数

How to call function through onclick when JS is loaded through System.js

我的 MVC 项目中有一个 typescript 文件已经变得非常大。我想分解使用 System.js 加载文件。

我在 _Layout.cshtml 视图中包含了 system.js 参考。

<script src="~/Scripts/system.js"></script>
<script>
    $(document).ready(function ()
    {
        System.import("Scripts/main.js");
    });
</script>

我的 main.ts 文件有一个加载项目的函数。

function load(id: string): void
{
    // Stuff
}

在我的 Index.cshtml 视图中,我有一个 div 在单击时调用函数。

<div onclick="load('@item.Id')"></div>

但是每次我点击 div 我都会在控制台中收到以下错误:

Uncaught ReferenceError: load is not defined at HTMLDivElement.onclick ((index):41)

查看网络流量,我可以看到 main.js 由 system.js 加载。但由于某些原因,无法通过 HTML 访问这些功能。我在错误的地方做某事吗?或者我需要一种特定的方式来设置我的打字稿文件来调用该函数吗?

感谢您的帮助。

<div onclick="load('@item.Id')"></div> 这种老式的纯 html 绑定事件侦听器的方式要求 load 成为全局范围函数。

System.js 导入你的 main.js,但我猜它有点把它限制在一个闭包中。 load 在全局范围内不再可访问,因此是错误。