在组件中单击时执行功能

Do a function on click in component

我有一个按钮 :

<BSButton Color="Color.Info" @onclick="LoadCategoryDetailsModal">
     <i class="fal fa-plus-circle mr-1"></i>Add New Category
</BSButton>

我有一个组件:

<CategoryDetails CategoryDetailModalTitle="@categoryDetailModalTitle">
</CategoryDetails>

在组件中,我有一个切换模式的功能(show/hide);模态框默认隐藏

@using BlazingShop.Services
@inject ICategoryService CategoryService

<BSModal @ref="CategoryDetailsModal" IsCentered="true">
    <BSModalHeader OnClick="@OnToggle">@CategoryDetailModalTitle</BSModalHeader>
    <BSModalBody><p>Modal body text goes here.</p></BSModalBody>
    <BSModalFooter>
        <BSButton Color="Color.Primary">Save Changes</BSButton>
        <BSButton Color="Color.Secondary" @onclick="@OnToggle">Close</BSButton>
    </BSModalFooter>
</BSModal>

@code {

    BSModal CategoryDetailsModal;

    [Parameter]
    public string CategoryDetailModalTitle { get; set; }

    void OnToggle(MouseEventArgs e)
    {
        CategoryDetailsModal.Toggle();
    }
}

我尝试从父组件切换模式。

你能帮帮我吗?

当我点击这个按钮时(在父组件中):

<BSButton Color="Color.Info" @onclick="LoadCategoryDetailsModal">
    <i class="fal fa-plus-circle mr-1"></i>Add New Category
</BSButton>

我想在子组件中使用这个功能:

CategoryDetailsModal.Toggle();

嘿,我刚找到答案! 在您的组件中添加 @ref="Modal" :

<CategoryDetails CategoryDetailModalTitle="@categoryDetailModalTitle" @ref="@Modal"></CategoryDetails>

在@Code部分:

private CategoryDetails Modal { get; set; }

在点击按钮的方法中:

 private void LoadCategoryDetailsModal()
    {
        category = new Category();
        categoryDetailModalTitle = "Add New Category";
        Modal.Toggle();
    }

Toggle是我在Child组件中做的一个方法:

public void Toggle()
    {
        CategoryDetailsModal.Toggle();
    }

如果您的父组件中有子组件:

<CategoryDetails CategoryDetailModalTitle="@categoryDetailModalTitle"></CategoryDetails>

还有一个按钮:

<BSButton Color="Color.Info" @onclick="LoadCategoryDetailsModal"><i class="fal fa-plus-circle mr-1"></i>Add New Category</BSButton>

然后,您可以定义一个名为 LoadCategoryDe​​tailsModal 的方法,该方法在用户单击上述按钮时执行...我猜 LoadCategoryDe​​tailsModal 方法应该包含应该切换模型的代码 window ...你可以这样做:

private void LoadCategoryDetailsModal()
{
   CategoryDetailsModalRef.Toggle();
} 

CategoryDe​​tailsModalRef 是一个包含对 CategoryDe​​tails 子组件。这就是将 @ref 属性添加到 捕获对 CategoryDe​​tails 组件的引用:

<CategoryDetails @ref="CategoryDetailsModalRef" CategoryDetailModalTitle="@categoryDetailModalTitle"></CategoryDetails>

并在@code 块中定义:CategoryDetails CategoryDetailsModalRef;

请注意,上面的代码假定您已经在中定义了一个名为 Toggle() 的方法 CategoryDe​​tails 组件,其作用是切换模态 window 的显示,可能是通过将布尔变量从 true 更改为 false,反之亦然。

希望这对您有所帮助...