Blazor, флажок держать флажок, событие после вызова метода StateHasChanged () - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть этот код:

@foreach (var item in list)
{
 <input type="checkbox" @onchange="@(e => HandleCheckChanged(e, item.Name))" checked="@item.IsChecked">
}

private async Task HandleCheckChanged(ChangeEventArgs e, string itemName)
{
   // do something ...
   StateHasChanged();
}

Если я отмечаю флажок, он вызывает HandleCheckChanged, а флажок проверяется Но если я изменю элементы списка , флажок предварительного просмотра отмечен все еще отмечен и не обновляется в зависимости от новых элементов списка. например, предположим, что у меня есть список упорядоченных номеров {1-20}, я выполняю следующие шаги: 1: list = GetAll (). Где (c => c .Id <10); 2: я проверяю первый флажок (номер 1) 3: list = GetAll (). Где (c => c .Id> = 10); (список обновлен и состояние изменилось) 4: проблема возникает здесь, флажок 11 проверен ??? но его значение ложно

1 Ответ

1 голос
/ 27 апреля 2020

Это происходит потому, что средство визуализации просто видит «тот же» список флажков и не видит причин для отправки обновления.

Простое решение, использующее @key - express, что они являются разными элементами:

@foreach (var item in list)
{
 <input @key="item.Id" type="checkbox" @onchange="@(e => HandleCheckChanged(e, item.Name))" checked="@item.IsChecked">
}

Вам не нужно вызывать StatehasChanged (), но это также не принесет никакого вреда ,

...