Blazor:直接将类绑定到输入元素

时间:2020-04-27 06:32:01

标签: blazor

在一个杂货清单应用程序中,我有一个父组件遍历杂货项目,而一个子组件使用输入元素(复选框和文本字段)显示了每个杂货项目的详细信息。我已经建立了直接绑定到GroceryItem成员的双向绑定,并且在使用输入数据更新成员方面,它工作正常。

我有问题的地方是通知父组件重新渲染自身。我知道在检测到更改时必须调用EventCallBack,但我想避免将类成员复制为局部变量,只是为了能够使用setter来检测更改并调用EventCallBack。我发现的另一个技巧是手动绑定数据,但是由于我必须为每个输入元素设置一个事件处理程序,因此又创建了重复项。

有更好的方法吗?

我希望有一种机制可以通过它向输入元素添加更多onchange事件处理程序,以调用EventCallBack ...,但是因为bind占据了我唯一无法使用的插槽。

mkdir my_django_app
cd my_django_app; python3 -m venv venv

2 个答案:

答案 0 :(得分:0)

如果要从子组件中调用父组件方法,则需要使用EventCallback。
但是,有很多方法可以从父组件中调用子组件中的方法。
要了解更多信息,请参见Blazor LifeCycle和RenderTree。
父级组件可以完全控制其子级,但是子级只能通过回调来调用父级。

答案 1 :(得分:0)

尚不支持为绑定的事件注册其他事件处理程序:https://github.com/dotnet/aspnetcore/issues/14365

一种变通的方法(我没有尝试过,但我认为这可能有效)可能是在组件中定义辅助属性,然后直接绑定到它们。以下代码仅针对其中之一进行了演示:

main.dart

如果这不起作用,我将其删除,因此人们不会因错误的答案而感到困惑。只是为了帮助。

如果这可行,那么您可以在helper属性的设置器中触发事件。