当前位置: 首页 > 知识库问答 >
问题:

如何通过调用Blazor中的另一个组件方法来更改按钮文本

乐正穆冉
2023-03-14

我有一个自定义按钮组件,如下所示。

<button class="btn btn-outline-primary" @onclick="OnClick"> @ButtonText</button>

@code {

    [Parameter]
    public string ButtonText { get; set; } = "Edit";

    public virtual void OnClick()
    {
        ButtonText = ButtonText == "Edit" ? "Editing..." : "Edit";
    }
}

当我点击按钮时,每件事都会例外,按钮文本也在变化。但是当我点击另一个按钮时,我想更改按钮的文本。为此,我调用按钮的onclick方法。但是,当我单击按钮时,即使调用了该方法,文本也不会更改。这是我的页面。

@page "/test"

<EditButton @ref="EditButton"></EditButton>

<button class="btn-primary" @onclick="ChangeButtonText">Change Button Text</button>

@code {

    EditButton EditButton;

    void ChangeButtonText()
    {
        EditButton.OnClick();
    }
}

共有1个答案

沈博涉
2023-03-14

部分原因是您的架构设计:按钮组件不应该管理编辑状态,它应该只显示它。

@page "/test"

<EditButton IsEditing="isEditing" Click="EditClick"></EditButton>

<button class="btn-primary" @onclick="ChangeButtonText">Change Button Text</button>

@code {

    //EditButton EditButton;
    bool isEditing = false;

    void ChangeButtonText()
    {
        isEditing = false;  // or !isEditing
    }

    void EditClick()
    {
       isEditing = ! isEditing;   
    }

}
 类似资料:
  • 所以假设我有一个“开”和一个“关”按钮。当我按下打开按钮时,我希望打开按钮隐藏自己,关闭按钮显示出来,反之亦然。 一个人怎么能这么做?

  • 我有两个类和一个文本文件数据库,第一个类中的,我们将其称为自动设置为数据库中的数字。现在,在中,我有一个小的和一个文本字段,当然还有一个按钮,我在文本字段中的值会覆盖数据库中的值,但问题出在这里。第一个类中的标签在运行时不会更新,但如果我重新启动它,它会显示我想要的值。 如何在程序运行时更新它?我尝试在另一个类的中更改标签,但它每次都给我一个。 我怎么解决这个? 我希望这让我更容易理解我的问题。这

  • 问题内容: 我有一个包含一个按钮的标题组件,并且我希望该按钮在单击时显示另一个组件(模式页面)。 我可以做这样的事情: 这是我的标头组件: 这是我的模态页面组件,单击其他组件上的按钮时应显示该组件页面: 用于模态的库:https : //github.com/marcio/react-skylight 问题答案: 更像这样: 确保在子组件上公开一个方法: 基本上,这是在将SkyLight的方法包装

  • 问题内容: 我正在建立一个Like / Unlike系统,我有一个按钮,该按钮具有一个类似于类的类,如果单击它,则将数据插入数据库中,并且将该类更改为different。 与假定拉另一个ajax调用不同的是,它删除了实际的类,但不起作用,当类更改时,它执行了类类应做的事情,并且仅当刷新页面时才起作用。 PHP代码 jQuery的 我刚刚做了一个与众不同的警报作为示例来对其进行测试,然后再使用它进行

  • 问题内容: 应用 http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css和 http://code.jquery.com/mobile/1.3.2/jquery.mobile后-1.3.2.min.js 无法通过脚本更改按钮的文本 有没有类似的经验并有解决方案? 可以从 FIDDLE 尝试DEMO **** JQUERY: H

  • 应用http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css和http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js后 无法通过脚本