首页 > 解决方案 > 如何将元素作为参数传递给函数

问题描述

有没有办法将元素作为参数传递给 onclick (或任何其他)函数,without定义一个 ref 变量?

例如,你会在 Angular 中做的事情<button #myBtn (click)='foo(myBtn)'>

我知道如何在 Blazor 中实现这一点的当前方式有点冗长。

<button @ref=MyButton @onclick='(()=>foo(MyButton))'>

@code{
 ElementReference MyButton;
}

如果可能的话,我想摆脱这@code部分。

标签: blazorblazor-server-sideblazor-webassembly

解决方案


如果你需要做一些 JsInterop 的东西,那么你不需要@ref。

<button id="mybutton" @onclick='(()=>Foo("mybutton"))'>

在你的 Foo 方法上:

        async Task Foo(string id)
        {
        //...do something before
        await JsRuntime.InvokeVoidAsync("doSomething ", id);
        //...do something after js function invoked
        }

在你的 Js 上:

doSomething = (id) => {
    var element = document.getElementById(id);
    // do something...
}

推荐阅读