Как запустить дополнительные действия после завершения привязки в Blazor? - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь понять, как запустить действие после завершения привязки

Например,

<input type="text" @bind="@Model.Value" />

<h2>@Value2</h2>

@code
{

void SetNewValue()
{
    Value2 = $"New value {this.Model.Value} added on {DateTime.Now}";
}

string Value2 {get;set;}

}

Это простой пример. Я не могу использовать onchange, так как его нельзя использовать с привязкой. Я пытался использовать onkeyup, но он выполняется до завершения привязки. У Blazor нет возможности справиться с потерей фокуса, поэтому я действительно не знаю, как это сделать.

Ответы [ 2 ]

2 голосов
/ 09 мая 2020
 @page "/"

<input type="text" value="@model.Value" @onchange="@((args) => { model.Value = 
 args.Value.ToString(); SetNewValue(); })" />

<h2>@Value2</h2>

@code
{

private Model model = new Model();

void SetNewValue()
{
    Value2 = $"New value {this.model.Value} added on {DateTime.Now}";
}

string Value2 { get; set; }



public class Model
{
    public string Value { get; set; }
}

}
1 голос
/ 09 мая 2020

Я пробовал использовать onchange, но он срабатывает после потери фокуса. Если вы хотите вызвать функцию при смене буквы, вы можете использовать oninput.

<input @oninput="OnValueChanged" value="@Value" />

Value: <div>@Value</div>

@code {
    [Parameter]
    public string Value { get; set; }

    [Parameter]
    public EventCallback<string> ValueChanged { get; set; }

    private Task OnValueChanged(ChangeEventArgs e)
    {
        Value = e.Value.ToString();

        return ValueChanged.InvokeAsync(Value);
    }
}
...