Blazor @onclick 事件以关闭循环内的单个项目
Blazor @onclick event to close a single item inside a loop
我将 Razor 组件与 Blazor 服务器应用程序一起使用。该应用程序轮询服务器上的警报消息。
服务器可能会发回几条消息,我循环处理这些消息。
div 上的 class 有一个“显示”和“隐藏”,负责隐藏元素。
我遇到的问题是我希望能够关闭每个 alertmessage
而不是全部 - 这发生在下面的简化代码中:
--snip
@if(alert.valid == true){
@foreach(var alert in alerts){
@if(alert.type == "alert")
<div id="alertmessage" class="@show">
<button type="button" @onclick="@show">Hide this element</button>
</div>
}
}
@code{
private string value { get; set;} = "show";
private void Show() {
value = "hidden";
}
}
根据上面的示例,如果有多个警报,方法 Show()
将关闭所有框,并且它产生 x 计数 <div id="alertmessage"
我明白了,但是有没有办法抓住那个特定的元素,比如 alert.id 之类的?感谢所有反馈。
谢谢。
在 blazor 中,你每次都使用对象,你应该为警报做一个 class 并为每个改变它的属性。
页面必须包含警报对象列表作为属性。
更多更少这个:
@if(alert.valid == true){
@foreach(var alert in alerts){
<div id="alertmessage" class="@show">
<button type="button" hidden="@alert.hidden" @onclick="()=>show(alert)">Hide this element</button>
</div>
}
}
@code{
private string value { get; set;} = "show";
private List<Alert> alerts = new();
private void Show(Alert alert) {
alert.hidden = true;
alert.message= "whatever"
}
public class Alert{
public String message = "whatever"
public bool hidden = false;
//other stuff
}
}
如果您想将逻辑与表示分开,您可以在其自己的 class 文件中声明警报逻辑。
我将 Razor 组件与 Blazor 服务器应用程序一起使用。该应用程序轮询服务器上的警报消息。 服务器可能会发回几条消息,我循环处理这些消息。 div 上的 class 有一个“显示”和“隐藏”,负责隐藏元素。
我遇到的问题是我希望能够关闭每个 alertmessage
而不是全部 - 这发生在下面的简化代码中:
--snip
@if(alert.valid == true){
@foreach(var alert in alerts){
@if(alert.type == "alert")
<div id="alertmessage" class="@show">
<button type="button" @onclick="@show">Hide this element</button>
</div>
}
}
@code{
private string value { get; set;} = "show";
private void Show() {
value = "hidden";
}
}
根据上面的示例,如果有多个警报,方法 Show()
将关闭所有框,并且它产生 x 计数 <div id="alertmessage"
我明白了,但是有没有办法抓住那个特定的元素,比如 alert.id 之类的?感谢所有反馈。
谢谢。
在 blazor 中,你每次都使用对象,你应该为警报做一个 class 并为每个改变它的属性。
页面必须包含警报对象列表作为属性。
更多更少这个:
@if(alert.valid == true){
@foreach(var alert in alerts){
<div id="alertmessage" class="@show">
<button type="button" hidden="@alert.hidden" @onclick="()=>show(alert)">Hide this element</button>
</div>
}
}
@code{
private string value { get; set;} = "show";
private List<Alert> alerts = new();
private void Show(Alert alert) {
alert.hidden = true;
alert.message= "whatever"
}
public class Alert{
public String message = "whatever"
public bool hidden = false;
//other stuff
}
}
如果您想将逻辑与表示分开,您可以在其自己的 class 文件中声明警报逻辑。