У меня есть компонент, который содержит 4 значка/кнопки. Мне нужно, чтобы каждая кнопка переходила на определенную страницу в сообществе Lightning при нажатии. Когда я добавляю свой контроллер, все кнопки переходят на один и тот же URL-адрес. Как я могу заставить их стрелять по каждому назначенному URL-адресу при нажатии?

Пример кода компонента:

<button class="slds-button slds-button_icon slds-m-left_xx-large slds-m-bottom_small" onmouseover="{!c.displayPopularTip}" onclick="{!c.gotoURL}">

<button class="slds-button slds-button_icon slds-m-left_xx-large slds-m-bottom_small" onmouseover="{!c.displayDataBasicTip}" onclick="{!c.gotoURL}">

Js контроллер:

({
gotoURL : function (component, event, helper) {
    var urlEvent = $A.get("e.force:navigateToURL");
    urlEvent.setParams({

        "url": "/clientserviceonline2/s/topic/0TO0Q0000008aIdWAI/popular-articles"
    });

    urlEvent.fire();
},
({
gotoURL : function (component, event, helper) {
    var urlEvent = $A.get("e.force:navigateToURL");
    urlEvent.setParams({

        "url": "/clientserviceonline2/s/topic/0TO0Q0000008aIdWAI/data-basics"
    });

    urlEvent.fire();
},

Всего есть 4 кнопки/иконки, но здесь я выбрал две. Независимо от того, какую кнопку я нажимаю, все они переходят к любой последней записи URL-адреса в контроллере js. Мне нужно, чтобы каждый из них переходил по своему отдельному URL-адресу. Спасибо.

0
ramtwins25 2 Янв 2019 в 05:17

1 ответ

Лучший ответ

Имя функции должно быть уникальным; поскольку вы определяете один и тот же метод дважды, одно определение перезаписывается в памяти. Самое простое решение — просто добавить параметр данных к вашим кнопкам:

<button ... data-target="popular-articles" onclick="{!c.gotoURL}">

К которому вы затем можете получить доступ в своем JavaScript:

({
    gotoURL : function (component, event, helper) {
        var urlEvent = $A.get("e.force:navigateToURL");
        urlEvent.setParams({

            "url": "/clientserviceonline2/s/topic/0TO0Q0000008aIdWAI/"+event.target.dataset.target
        });

        urlEvent.fire();
    }
})
0
sfdcfox 2 Янв 2019 в 05:25