blazor - 如何在 Blazor 中获取单击事件的目标元素
问题描述
我想要在 ASP.NET Core blazor 中触发单击事件的确切目标。这是可以实现的吗?
解决方案
您可以使用 @ref 获取对 DOM 对象的引用,然后将其作为参数传递给您的处理函数。
然后,您可以将其作为参数传递给 JS 互操作。
例如:
反剃刀
@page "/counter"
@using Microsoft.JSInterop
@inject IJSRuntime JSRuntime
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<p>Last button clicked: @lastButtonClicked</p>
<button @ref=button1 class="btn btn-primary" @onclick="@(()=>IncrementCount(@button1))">Click me</button>
<button @ref=button2 class="btn btn-primary" @onclick="@(()=>IncrementCount(@button2))">Click me</button>
@code {
private ElementReference button1;
private ElementReference button2;
private int currentCount = 0;
private string lastButtonClicked = "None";
private async void IncrementCount(ElementReference element)
{
currentCount++;
await JSRuntime.InvokeVoidAsync("setElementText", element, "I was clicked");
}
}
并确保将此脚本添加到 Index.html
<script>
window.setElementText = (element, text) => { console.log(element); element.innerText = text; }
</script>
推荐阅读
- git - Git:区分函数列表
- vue.js - Vue判断组件是否挂载
- hyperledger-fabric - 在对等点上实例化链码时出错
- ios - POST API 在更改 Rest API 的基本 URL 后停止在 iOS Swift 中工作
- r - 如何删除列中小数点后面不必要的零
- sql-server - 删除最近 2 个函数集 (mastersp_id, exec_id) 日志以外的执行日志
- vue.js - 我可以在一个 Vue 组件内的两个插槽之间传递道具吗?
- javascript - Node.js:TypeError:Router.use() 需要一个中间件函数但得到一个对象
- python - 通过求和表达式的值返回模型函数的条件
- python - Django - 如何在模型 Mixin 中动态创建信号