Zpětného volání události s blazor

0

Otázka

Já jsem učení o EventCallBack s blazor, ale chtěl jsem vědět,

  1. Existuje způsob, jak můj návrat metoda vrátí druhý argument na mateřské straně. Chtěl bych vědět, rowID, že to přišlo z

Rodič Kód

 @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);
    }
}

Dítě Součásti 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);
    }

Nejsem si jistý, jak toho dosáhnout, pokud je to možné (debugger mi chyba). Jediný další způsob, jak by bylo změnit generické třídy přidat rowID atribut. Ale je tam jiný způsob?

Změna linky ( co bych ráda, aby to bylo)

<AddWidgetToColumnComponent rowID="rw.rowID" onAddingWidget="AddWidgetToRow(rw.rowID)"></AddWidgetToColumnComponent>

a tento řádek

private void AddWidgetToRow(GenericWidgets evnt, int rowID)
1

Nejlepší odpověď

2

Pokud je otázka, o tom, jak získat EventCallback na oheň na mateřské s více parametry, tak obvykle dosáhnout vytvořením třídy zapouzdřit vše, co potřebuje, aby se prošel.

Takže můžete skončit s něčím, jako je:

 [Parameter] public EventCallback<AddWidgetArgs> onAddingWidget { get; set; }

A AddWidgetArgs je třída, jako je:

public class AddWidgetArgs 
{
    public GenericWidgets GenericWidget { get; set; } // My guess at your 1st parameter 
    public int RowId { get; set; } // Additional parameter
}

Pak budete konzumovat na mateřské, jako je tento:

 private void AddWidgetToRow(AddWidgetArgs args)  { ... } // Or async Task, etc.
2021-11-23 19:57:41

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................