Отображаемое значение как возвращено из метода контроллера - PullRequest
0 голосов
/ 09 июля 2019

Новичок в Salesforce, поэтому, пожалуйста, потерпите меня.Я создал компонент молнии и хотел бы отобразить на странице значение, возвращаемое контроллером компонента.

public class My_Controller { 
@AuraEnabled
public static Decimal getRate(String currFrom, String currTo) {

Decimal value = 1.067773;

return value;  
}
}

<aura:component controller="My_Controller">

<lightning:input type="string" name="res" aura:id="res" value= " 
{!c.My_Controller.getRate('A', 'B')}" label="Result"/>

Но это не может быть так просто :), как я получаю: "Не удалось сохранитьRate.cmp: неожиданный токен: '(' в столбце 46 выражения: c.My_Controller.getRate ('A', 'B'): Source "

Как правильно вызывать метод?

Ответы [ 2 ]

1 голос
/ 14 июля 2019
public class My_Controller { 
@AuraEnabled
public static Decimal getRate(String currFrom, String currTo) {

Decimal value = 1.067773;

return value;  
}
}

<aura:component controller="My_Controller">
<aura:attribute name = "value" type= "Decimal"/>
  <aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<lightning:input type="string" name="res" aura:id="res" value= " 
{!v.value}" label="Result"/>

<aura:component>

add a new method in controller.js:-
({

    doInit : function(component, event, helper) {
        var action = component.get("c.getRate");
        action.setParams({
            "currFrom": 'Test',
            "currTo"  : 'Test'
        });

        action.setCallback( this, function(actionResult) {
            var state = actionResult.getState();
            component.set('v.spinner',false);
            if (state === "SUCCESS"){
                var result = actionResult.getReturnValue();
                component.set("v.value",result);
            }
        });
        $A.enqueueAction(action);
    }
    })
1 голос
/ 10 июля 2019

Вы не можете вызвать метод контроллера сервера Apex напрямую из разметки на стороне клиента Lightning.

Вместо этого вам нужно объявить <aura:attribute> в разметке вашего компонента и связать значение с этим атрибутом.

<aura:attribute name="rate" type="String" />
<lightning:input type="string" name="res" aura:id="res" value="{! v.rate }" label="Result"/>

Затем ваш клиентский контроллер JavaScript должен выполнить вызов на стороне сервера в асинхронном режиме, чтобы получить значение из Apex. Наконец, обратный вызов Lightning JavaScript из этого асинхронного метода заполнил бы возвращаемое значение в <aura:attribute>, а инфраструктура привязки данных инфраструктуры позаботится об обновлении <lightning:input>.

Звучит сложно, но в основном это стандартный код. Связанная выше документация включает подробные примеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...