我正在学习使用blazor的EventCallBack,但我想了解
- 我的return方法有没有办法在父方返回第二个参数。我想知道它来自哪个rowID
父代码
@foreach (var rw in pg.rows)
{
@if (rw.rowDef == 1)
{
@if (rw.widgetsSection1.Count == 0)
{
<AddWidgetToColumnComponent rowID="rw.rowID" onAddingWidget="AddWidgetToRow"></AddWidgetToColumnComponent>
}
}
}
}
@code{
...
private void AddWidgetToRow(GenericWidgets evnt)
{
//bool confirmed = await JsRuntime.InvokeAsync<bool>("confirm", "Are you sure?");
var row = pg.rows.Where(x => x.rowID == 3).FirstOrDefault();
//row.addWidgetSection1(widgets);
}
}
子组件AddWidgetToColumnComponent
<button class="btn btn-info" @onclick="@addComponent">Ajouter</button>
@code {
[Parameter]
public int rowID { get; set; }
[Parameter]
public EventCallback<GenericWidgets> onAddingWidget { get; set; }
public async void addComponent()
{
GenericWidgets widget = new GenericWidgets();
await onAddingWidget.InvokeAsync(widget);
}
如果可能的话,我不知道如何完成(调试器给我错误(。唯一的其他方法是更改我的泛型类,在其中添加rowID属性。但是还有其他方法吗?
更改线路(我希望它是什么(
<AddWidgetToColumnComponent rowID="rw.rowID" onAddingWidget="AddWidgetToRow(rw.rowID)"></AddWidgetToColumnComponent>
和这条线路
private void AddWidgetToRow(GenericWidgets evnt, int rowID)
如果问题是如何让EventCallback在具有多个参数的父级上激发,我通常通过创建一个类来封装需要传递的所有内容来实现这一点。
所以你可能会得到这样的东西:
[Parameter] public EventCallback<AddWidgetArgs> onAddingWidget { get; set; }
AddWidgetArgs是一个类,比如:
public class AddWidgetArgs
{
public GenericWidgets GenericWidget { get; set; } // My guess at your 1st parameter
public int RowId { get; set; } // Additional parameter
}
然后你在父母身上消费,如下所示:
private void AddWidgetToRow(AddWidgetArgs args) { ... } // Or async Task, etc.