首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从JS代码到静态Blazor方法使用注入服务

从JS代码到静态Blazor方法使用注入服务
EN

Stack Overflow用户
提问于 2019-10-04 18:31:41
回答 1查看 1.2K关注 0票数 2

我有一个应用程序,它使用jQuery库来显示“确认”对话框。

当用户在对话框上单击“OK”或“Cancel”时,首先对我的Javascript代码进行回调。从那里开始,我根据用户所做的决定调用了一个Blazor方法。

这一切看起来都是这样的:

我的js密码:

代码语言:javascript
复制
$('.alert-yesno).on('click', function() {
    // For simplicity I immediately call the Blazor method
    DotNet.invokeMethodAsync('[Assembly name]', 'DoSomething')
                            .then(data => {
                                // do something...
                            });
});

Blazor页面:

代码语言:javascript
复制
@inject MyService MyService

<button class="alert-yesno">Show dialog</button>

@code
{
    [JSInvokable]
    public static async Task DoSomething()
    {
        // How to use the non static MyService here...?
    }
}

一切都很好。Javascript部分调用我的Blazor方法。但是如何从那里使用MyService呢?这将被注入到页面中。这很好,因为它利用了依赖注入。

我不想每次都在static方法中创建一个static实例,因为这样我就会释放所有的自动注入依赖项。

我怎样才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-04 19:38:56

有关更完整的示例,请参见https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interop?view=aspnetcore-3.0#instance-method-call,但您可以通过调用

代码语言:javascript
复制
DotNetObjectReference.Create(myInstance);

然后javascript代码可以调用该对象上的实例方法。由于组件(以及注入到组件中的服务)与jquery单击处理程序具有不同的生命周期,这可能会导致其他一些问题,但上面的链接应该是一个很好的起点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58241562

复制
相关文章

相似问题

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