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

问题描述 投票:0回答:1

我的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访问这些功能。我在错误的地方做某事吗?或者是否有一种特定的方法我需要设置我的打字稿文件来调用该函数?

谢谢你的帮助。

c# jquery asp.net-mvc typescript systemjs
1个回答
1
投票

<div onclick="load('@item.Id')"></div>这种旧式-html-html绑定事件监听器的方式要求load是一个全局范围函数。

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

© www.soinside.com 2019 - 2024. All rights reserved.