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

时间:2019-04-10 18:27:34

标签: c# jquery asp.net-mvc typescript systemjs

我的MVC项目中有一个打字稿文件,该文件已经变得很大。我想用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访问功能。我在错误的地方做什么吗?还是我需要设置打字稿文件来调用该函数的特定方法?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

<div onclick="load('@item.Id')"></div>这种绑定事件侦听器的老式方法,要求load是全局作用域函数。

System.js导入了您的main.js,但我想它有点像是封闭的。 load在全局范围内不再可用,因此该错误。