首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从包装在JSLibrary Nuget包中的C#元素访问自定义元素- Blazor .NET

如何从包装在JSLibrary Nuget包中的C#元素访问自定义元素- Blazor .NET
EN

Stack Overflow用户
提问于 2022-03-15 04:02:42
回答 1查看 84关注 0票数 0

我已经将模型查看器JS库封装在一个C# Razor类库中,并将其作为Nuget包。然而,与其他JS库不同的是,Model-Viewer没有很多方法,它的主要属性是自定义元素model-viewer及其属性。在用C#包装库之后,我应该如何访问这个元素,有什么想法吗?

ModelViewerService.cs:

代码语言:javascript
复制
public class ModelViewerService
{
    private static Task<IJSObjectReference> s_module = null;

    private readonly IJSRuntime js;

    public ModelViewer(JSRuntime js)
    {
        Assembly asm;
        JS = js;

        if(s_module == null)
        {
            asm = Assembly.GetExecutingAssembly();
            s_module = JS.InvokeAsync<IJSObjectReference>("import", "./_content/ModelViewerPackage/scripts/model-viewer/model-viewer.min.js?version=" + asm.ManifestModule.ModuleVersionId).AsTask();
        }
    }
}

在我的Index.blazor页面中,当我直接通过

<script src="model=viewer.min.js" type="module"></script>

我只是通过调用:

代码语言:javascript
复制
<model-viewer src="mymodel.glb"></model-viewer>

我会用同样的语法使用这个库吗?还是我需要对我的包做任何抽象?

EN

回答 1

Stack Overflow用户

发布于 2022-03-15 04:14:24

好吧,我想通了。我需要创建一个ModelViewerService对象,传递一个注入的JSRuntime对象,这个库将从我的包中导入到我的Blazor中。

在Index.blazor.cs中

代码语言:javascript
复制
[Inject]
private JSRuntime js;

protected override async Task OnInitializedAsync()
{
     this.StateHasChanged()
     await base.OnInitializedAsync();

     ModelViewerService modelViewer = new(js); // This will do the trick.
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71476919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档