【探索Aura开发之 】使用openSubtab打开另外一个Aura组件的时候,怎么传递RecordId的值
2023年09月20日
文章浏览:327
需求:使用openSubtab打开一个Custom Aura组件,同时把当前的RecordId的值传递过去


传递值的OpenSubTabCompont的Contoller代码如下(要传递的值,放在State里面)

({
    openSubtab: function(component, event, helper) {
        var workspaceAPI = component.find("workspace");
        workspaceAPI.getEnclosingTabId().then(function(enclosingTabId) {
            workspaceAPI.openSubtab({
                parentTabId: enclosingTabId,
                pageReference: {
                    "type": "standard__component",
                    "attributes": {
                        "componentName": "c__templateComponent"
                    },
                    "state": {
                        "c__recordId": component.get("v.recordId")
                    }
                }
            }).then(function(subtabId) {
                console.log("The new subtab ID is:" + subtabId);
            }).catch(function(error) {
                console.log("error");
            });
        });
    }
})


接收值的Aura组件代码如下,方法就是从pageReference中取得

({
    init: function (cmp) {
        var pageReference = cmp.get("v.pageReference"); 
        cmp.set("v.recordId", pageReference.state.c__recordId);

    },

})


当然,如果要使用pageReference,那么就需要在CMP文件中包含pageReference的实例

<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<aura:attribute name="pageReference" type="object"/>


按照官方文档,实际的URL格式会变成下面的样子

/cmp/c__templateComponent?c__recordId=9062I000000IDkGQAW



参考文章


 https://developer.salesforce.com/docs/atlas.en-us.lightning.meta/lightning/components_navigation_page_definitions.htm 



关注 收藏
2023年09月20日

感谢分享!

回复