问题描述
我在 Blazor 服务器端使用 MudBlazor,我正在尝试双重绑定 MudChip。我想保存在数据库中选择的芯片并在稍后检索数据并将芯片预渲染为选定的。基本上是在芯片上做双重绑定。它似乎不起作用,我已经尝试过:
<MudContainer>
<MudText Style="display:inline;color:white">Goal Type</MudText>
<MudChipSet @bind-SelectedChip="md" Style="display:inline;" Filter="true">
<MudChip Text="Financial" Color="Color.Dark">Financial</MudChip>
<MudChip Text="Personal" Color="Color.Dark">Personal</MudChip>
</MudChipSet>
</MudContainer>
这是代码:
MudChip md;
protected override void OnInitialized()
{
Init();
}
public void Init()
{
if (md == null)
{
md = new MudChip { Color = Color.Dark,Text = "Financial",IsSelected = true };
}
}
- 创建对所选芯片的引用:
<MudChipSet @bind-SelectedChip="md" @onselect="OnSelect" Style="display:inline;" Filter="true">
<MudChip Text="Financial" Color="Color.Dark">Financial</MudChip>
<MudChip @ref="personal" Text="Personal" Color="Color.Dark">Personal</MudChip>
</MudChipSet>
这是代码:
MudChip md;
MudChip personal;
protected override void OnInitialized()
{
if(md is null)
{
md = personal;
}
}
这些方法都不起作用,您知道是否可以进行双重绑定吗?我还在 GitHub 页面上询问过,其中一位贡献者说,通过使用提供的示例,这是可能的。对我来说,它们没有多大帮助。这是 GitHub 问题:
https://github.com/Garderoben/MudBlazor/discussions/1791
解决方法
OnInitialized 在第一次渲染之前被触发,所以当你设置 personal
时 md=personal
仍然为 null。
当 firstRender 为 true 时,将该代码移动到 OnAfterRender(bool firstRender)