13 changed files with 90 additions and 167 deletions
@ -1,37 +0,0 @@ |
|||
using Microsoft.JSInterop; |
|||
|
|||
namespace Avalonia.Web.Blazor |
|||
{ |
|||
// This class provides an example of how JavaScript functionality can be wrapped
|
|||
// in a .NET class for easy consumption. The associated JavaScript module is
|
|||
// loaded on demand when first needed.
|
|||
//
|
|||
// This class can be registered as scoped DI service and then injected into Blazor
|
|||
// components for use.
|
|||
|
|||
public class ExampleJsInterop : IAsyncDisposable |
|||
{ |
|||
private readonly Lazy<Task<IJSObjectReference>> moduleTask; |
|||
|
|||
public ExampleJsInterop(IJSRuntime jsRuntime) |
|||
{ |
|||
moduleTask = new(() => jsRuntime.InvokeAsync<IJSObjectReference>( |
|||
"import", "./_content//exampleJsInterop.js").AsTask()); |
|||
} |
|||
|
|||
public async ValueTask<string> Prompt(string message) |
|||
{ |
|||
var module = await moduleTask.Value; |
|||
return await module.InvokeAsync<string>("showPrompt", message); |
|||
} |
|||
|
|||
public async ValueTask DisposeAsync() |
|||
{ |
|||
if (moduleTask.IsValueCreated) |
|||
{ |
|||
var module = await moduleTask.Value; |
|||
await module.DisposeAsync(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue