blazor - 如何将元素作为参数传递给函数
问题描述
有没有办法将元素作为参数传递给 onclick (或任何其他)函数,without
定义一个 ref 变量?
例如,你会在 Angular 中做的事情<button #myBtn (click)='foo(myBtn)'>
我知道如何在 Blazor 中实现这一点的当前方式有点冗长。
<button @ref=MyButton @onclick='(()=>foo(MyButton))'>
@code{
ElementReference MyButton;
}
如果可能的话,我想摆脱这@code
部分。
解决方案
如果你需要做一些 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...
}
推荐阅读
- jquery - jQuery过滤和搜索带有对象的数组
- python - 从源代码编译 TensorFlow 时出错 - 没有名为“keras_applications”的模块
- php - 在 PHP 中打开和读取文件夹内目录中的文件
- php - 如何从 AJAX 调用的 PHP 文件中回显 SQL SELECT 语句?
- javascript - highcharts 极坐标图,单独移动标签以适应小空间
- python - 熊猫:在组内聚合之前排序
- reactjs - 无法部署 React 应用程序
- arrays - Gnuplot 宏、do for 和数组
- python - SQLAlchemy 查询父级的多个子级返回 [(bool, bool)]
- python - Django - 在模板中打印字典的长度