[英]Blazor JS interop: how to pass undefined to a JavaScript function
[英]Radzen Blazor WASM JavaScript Interop function not defined
我正在使用Radzen Blazor Components ,它们非常有用且易于实现,带有.NET 6 Blazor WebAssembly App 。
我按照 Radzen web 上的指南安装组件。
问题是我正在尝试使用 IJSRuntime 调用 JavaScript function 但它会引发异常,指出 function 未定义。 我想在某种程度上,添加的 javascript 文件不包含在编译中,因为我用一个普通的 Blazor WASM 应用程序测试了 JS 互操作,它可以工作。
有谁能够帮我? 非常感谢您。
例外:
blazor.webassembly.js:1 crit:Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] 未处理的异常渲染组件:找不到“createAlert”(“createAlert”未定义)。 错误:找不到“createAlert”(“createAlert”未定义)。 在 https://localhost:7000/_framework/blazor.webassembly.js:1:328 在 Array.forEach () 在 a.findFunction (https://localhost:7000/_framework/blazor.webassembly.js:1:296 ) 在 _ (https://localhost:7000/_framework/blazor.webassembly.js:1:2437) 在 https://localhost:7000/_framework/blazor.webassembly.js:1:3325 在新 ZA5A3F0F287A448982AAC520CFFE47799 Object.beginInvokeJSFromDotNet (https://localhost:7000/_framework/blazor.webassembly.js:1:3306) 在 Object.St [as invokeJSFromDotNet] (https://localhost:7000/1_framework/ :59853) 在 _mono_wasm_invoke_js_blazor (https://localhost:7000/_framework/dotnet.6.0.8.yj5vlwdtrc.js:1:195300) 在 wasm://wasm/00971db2:wasm-function[219]:0x1a48f
这是代码:
索引.razor
@inject IJSRuntime JS
<RadzenButton Text="Show Alert" Click=@ShowAlert/>
@code {
private async Task ShowAlert() => await JS.InvokeVoidAsync("createAlert");
}
互操作.js
function createAlert() {
alert("Hey this is an alert");
}
索引.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>Blazor App</title>
<base href="/" />
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />
<link href="BlazorApp.Client.styles.css" rel="stylesheet" />
<link rel="stylesheet" href="_content/Radzen.Blazor/css/default.css">
<script src="_content/Radzen.Blazor/Radzen.Blazor.js"></script>
</head>
<body>
<div id="app">Loading...</div>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>
<script src="_framework/blazor.webassembly.js"></script>
<script scr="interop.js"></script>
</body>
</html>
尝试使用IJSObjectReference
来引用 JS 文件:
索引.razor:
@page "/"
@inject IJSRuntime JS
<RadzenButton Text="Show Alert" Click=@ShowAlert />
@code {
private IJSObjectReference? moudle;
protected override async Task OnInitializedAsync()
{
moudle = await JS.InvokeAsync<IJSObjectReference>("import", "./interop.js");
}
private async Task ShowAlert()
{
await moudle.InvokeVoidAsync("createAlert");
}
}
interop.js:
export function createAlert() {
alert("Hey this is an alert");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.