我正在使用 Blazor WebAssembly 实现一个简单的海报板。使用 X 按钮删除任何卡片时,删除的始终是列表中的最后一个元素。
@foreach (var item in _cards)
{
<div class="card-title">
<input type="text" id="@item.TitleElementId" value="@item.Title" />
<button class="btn-remove" @onclick="() => RemoveCard(item)">X</button>
</div>
}
<button class="btn-add" @onclick="AddNewCard">+</button>
@code {
private List<Card> _cards = new List<Card>();
private void AddNewCard()
{
_cards.Add(new Card());
}
private void RemoveCard(Card card)
{
_cards.Remove(card);
// Also tried _cards.RemoveAll(i => i.TitleElementId == card.TitleElementId);
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到只有在修改卡内某些输入的值后才会发生这种情况。
原来是值绑定的问题。我需要使用 Blazor 的@bind-""
而不是默认的 html value=""
。不幸的是我不知道为什么会发生这种情况。
所以而不是
<input type="text" value="item.Title"/>
Run Code Online (Sandbox Code Playgroud)
我改为
<input type="text" @bind="item.Title"/>
Run Code Online (Sandbox Code Playgroud)
一切都按预期进行。
归档时间: |
|
查看次数: |
1398 次 |
最近记录: |