この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ページの参照を使用して Lightning でタブとサブタブを開く

ページの参照を使用して、タブおよびサブタブで直接 Lightning コンポーネントを開きます。
まず、greetings.cmp (lightning:isUrlAddressible を実装するコンポーネント) を作成してみましょう。
1<aura:component implements="lightning:isUrlAddressable">
2    <aura:attribute name="name" type="String" description="The person that will be greeted" />
3    <aura:handler name="init" value="{!this}" action="{!c.init}" />
4    <aura:handler name="change" value="{!v.pageReference}" action="{!c.handlePageChange}" />
5    <h1>Greeting Page</h1>
6    <div>Hello, {!v.name}</div>
7</aura:component>
JavaScript コントローラ greetingsController.js は、init メソッドで URL パラメータを処理し、その URL パラメータを使用して name 属性を割り当てます。
1({
2    init: function(cmp, evt, hlp) {
3    var myPageRef = cmp.get("v.pageReference");
4    var name = myPageRef && myPageRef.state ? myPageRef.state.c__name : "World";
5    cmp.set("v.name", name);
6    },
7    handlePageChange: function(cmp, evt, hlp) {
8    var myPageRef = cmp.get("v.pageReference");
9    var name = myPageRef && myPageRef.state ? myPageRef.state.c__name : "World";
10    cmp.set("v.name", name);
11}
12})
これで、greetings.cmp を開いたときに c__name URL パラメータを設定する入力項目が openGreetings.cmp に含まれるようになりました。
1<aura:component>
2    <aura:attribute name="pageReference" type="Object"/>
3    <aura:handler name="init" value="{! this }" action="{! c.init }"/>
4    <lightning:navigation aura:id="navService"/>
5    <lightning:button label="Open Greeting in Subtab" onclick="{!c.handleClick}"/>
6    <lightning:input label="Name" name="myname"
7</aura:component>

コントローラ openGreetingsController.jsopenSubtab() を使用して、c__namemyname 入力項目の値に設定します。uid パラメータを使用すれば、条件に応じてタブおよびサブタブを重複排除できます。毎回新しいタブまたはサブタブを開くには、uid を省略します。

1({
2openSubtab: function(component, event, helper) {
3        var workspaceAPI = component.find("workspace");
4        workspaceAPI.openSubtab({
5            pageReference: {
6                // Lightning Components have a type of "standard__component"
7                "type": "standard__component",
8                "attributes": {
9                    "componentName":"c__greetings",
10                },
11                "state": {
12                    "uid": "1",
13                    "c__name": component.get("v.myName");
14                }
15            },
16            focus: true
17        }).then(function(response) {
18        workspaceAPI.getTabInfo({
19            tabId: response
20        }).then(function(tabInfo) {
21            console.log("The recordId for this tab is: " + tabInfo.recordId);
22        });
23        }).catch(function(error) {
24            console.log(error);
25        });
26    }
27)}