【发布时间】:2019-10-01 16:56:41
【问题描述】:
我以这种方式制作了 Blazor 组件:
<input bind-value-oninput="Title" />
@functions {
[Parameter] string Title { get; set; }
[Parameter] EventCallback<string> TitleChanged { get; set; }
}
家长:
@page "/fetchdata"
Parent:<input bind-value-oninput="Title" /> - Child:<Comp bind-Title="Title"></Comp>
@functions {
string Title;
}
正如预期的那样,编辑父输入会将其值传播给组件,但反之亦然,这是设计对吗?
我通过此编辑实现了双向行为:
<input bind-value-oninput="Title" />
@functions {
string _Title { get; set; }
[Parameter] string Title
{
get { return _Title; }
set
{
Console.WriteLine($"{value}->{_Title}");
if (_Title != value)
{
_Title = value;
TitleChanged.InvokeAsync(value);
}
}
}
[Parameter] EventCallback<string> TitleChanged { get; set; }
}
这是实现双向数据绑定的最佳实践吗?那么 TitleChanged 必须手动调用,对吧?是不是像WPF的PropertyChanged?
没有
if (_Title != value)
代码进入循环,有人可以解释为什么吗?
【问题讨论】:
标签: c# blazor 2-way-object-databinding