我希望我没有错过其他主题中的任何合适的解决方案。正如主题所说,我将blazor与interop调用一起使用。这很好,但现在我的具有类定义的TypeScript文件通过导入使用了另一个TS模块。后来,我添加了类型为"的脚本;模块";属性,以避免另一个问题。现在我对这个脚本函数的互操作调用(通过JSRuntime(不再工作了,可能是因为模块类和变量的范围有限?
在代码出现之前,非常感谢您的帮助!
CanvasFeeder.ts/js中的示例类,带有通过interop:调用的方法
export class CanvasFeeder
{
public InitCanvas(){ }
}
export * as CanvasFeed from "CanvasFeeder";
var MyCanvasFeeder = new CanvasFeeder();
var ToCallInterop = () => {MyCanvasFeeder.InitCanvas();};
脚本参考index.html:
<script src="typescript/CanvasFeeder.js" type="module"></script>
我试过什么?
JSRuntime.InvokeVoidAsync("ToCallInterop");
JSRuntime.InvokeVoidAsync("MyCanvasFeeder.ToCallInterop");
我还尝试直接在index.html.中实例化类和函数
错误消息是什么?
- 未处理的异常:找不到"ToCallInterop">
- 未处理的异常:"ToCallInterop"不是变量(当直接在index.html区域实例化var时
Blazor查找要在窗口上调用的函数,因此您需要将MyCanvasFeeder对象存储在窗口对象中。
window['MyCanvasFeeder'] = new CanvasFeeder()