【问题标题】:Salesforce LightningQuickAction Not Working as ExpectedSalesforce LightningQuickAction 未按预期工作
【发布时间】:2022-01-04 15:40:55
【问题描述】:

我是 Salesforce 新手,需要您的指导。

我正在创建闪电组件,如下所示。

对于这个闪电组件,我正在实现:force:lightningQuickAction

还有一个按钮:“选择产品项目

按下按钮时,我想调用另一个组件作为弹出窗口,就像上图一样。 但这是我得到的:

这是我的代码: 组件 1:cmp

<aura:component controller="OptyProductItemController" implements="flexipage:availableForAllPageTypes,force:hasRecordId,force:lightningQuickAction" access="global" >
    
        // Removed code here

        <lightning:button variant="Brand" class="slds-m-top_small" type="submit" label="Create SO" />
        <lightning:button variant="Neutral" class="slds-m-top_small" label="Select Product Item" onclick="{! c.pickProductItem }" />
    
</aura:component>

组件 1:控制器

pickProductItem : function(component, event, helper) {
        var navigateEvent = $A.get("e.force:navigateToComponent");
        navigateEvent.setParams({
            componentDef: "c:SelectSalesOrderItem",
            componentAttributes: {
                optyId : component.get("v.recordId")
            }
            //componentAttributes :{ }
        });
        navigateEvent.fire();
    }

组件 2:cmp

<aura:component controller="SelectSalesOrderItemController" implements="flexipage:availableForAllPageTypes,force:hasRecordId,force:lightningQuickAction" access="global">
    <aura:attribute name="mycolumn" type="Object[]"/>
    <aura:attribute name="optyId" type="String"/>
    <aura:attribute type="Opportunity_Product_Item__c[]" name="optyProductList"/>
    <aura:handler name="init" value="{!this}" action="{!c.fetchOptyProduct}"/>
    
    <lightning:datatable data="{!v.optyProductList }" 
                         columns="{!v.mycolumn}" 
                         keyField="id"
                         hideCheckboxColumn="false" />
</aura:component>   

我的代码有错误吗?

【问题讨论】:

    标签: salesforce salesforce-lightning


    【解决方案1】:

    一些cmets优先:

    • 如果这些是您正在构建的新组件,我建议您将它们创建为 Lightning Web 组件 (LWC),因为 Aura 现在被认为是一项遗留技术。

    • 如果它们需要保留为 Aura 组件,documentation for force:navigateToComponent 会提到此事件已被弃用并建议改为:

      • 在目标组件中实现lightning:isUrlAddressable接口。
      • 使用lightning:navigation 组件和standard__component 页面类型导航到组件。

    供您参考:Documentation for lightning:isUrlAddressable with examples


    现在回答您的实际问题:

    您正在经历的是预期的行为。从我上面链接的force:navigateToComponent 的文档中:

    当从嵌入在 Lightning Experience 或 Salesforce 应用程序中的组件触发时,应用程序会在应用程序内容区域中创建并呈现目标组件,替换当前内容。

    如果您希望第二个组件以弹出窗口的形式打开 - 类似于第一个组件的行为方式 - 我建议使用以下两个选项之一:

    1) 在第一个组件中渲染您的第二个组件(组件组合)

    您可以使用 aura:if 或 JS 代码来决定何时显示第二个组件。

    <!--c:yourFirstComponent-->
    <aura:component>
        <c:yourSecondComponent/>
    </aura:component>
    

    2) 将两个组件组合成一个组件

    只需让您的第一个组件包含执行这两个操作所需的所有逻辑。第一种方法比这种方法更可取,但这是一种替代方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 2022-01-24
      • 2015-05-11
      • 2020-05-15
      • 2014-10-31
      • 2018-02-12
      • 2014-01-20
      相关资源
      最近更新 更多