【问题标题】:Event callback with blazor带有 blazor 的事件回调
【发布时间】:2021-11-23 18:21:22
【问题描述】:

我正在使用 blazor 学习 EventCallBack,但我想知道

  1. 有没有办法让我的返回方法在父端返回第二个参数。我想知道它来自的 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)

【问题讨论】:

  • 这个问题有点难理解。对于问题 1,您是在询问调试还是让回调在父级上触发?对于问题 2,您是在问 AddWidgetToRow 是否可以接收附加参数?您在最后提到您更改了一些行,这也有点令人困惑。我应该尝试理解哪个版本?如果您尽可能清楚地说明这一点,您将获得更好的答案。 :)
  • 对于第 1 部分,要向父母开火,我会说,我提到的这些行是我打算做的,但是它失败了。最后的那行是我想要做的。如果有任何意义

标签: c# asp.net-core blazor blazor-server-side


【解决方案1】:

如果问题是关于如何让 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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2020-10-08
    • 1970-01-01
    • 2018-10-01
    • 2013-12-11
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多