显示从控制器方法返回的值
Display value as returned from controller method
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"/>
但这不可能那么简单:) 正如我得到的:"Failed to save Rate.cmp: unexpected token: '(' at column 46 of expression: c.My_Controller.getRate('A', 'B'): Source"
调用方法的正确方法是什么?
您不能直接从 Lightning 客户端标记调用 Apex 服务器控制器方法。
相反,您需要在组件标记中声明 <aura:attribute>
并将值绑定到该属性。
<aura:attribute name="rate" type="String" />
<lightning:input type="string" name="res" aura:id="res" value="{! v.rate }" label="Result"/>
然后,您的 JavaScript client-side 控制器需要异步创建一个 server-side call,以从 Apex 获取值。最后,来自该异步方法的 Lightning JavaScript 回调会将 return 值填充到 <aura:attribute>
中,框架的数据绑定基础设施将负责更新 <lightning:input>
。
这听起来很复杂,但它主要是样板代码。上面链接的文档包含详细示例。
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);
}
})
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"/>
但这不可能那么简单:) 正如我得到的:"Failed to save Rate.cmp: unexpected token: '(' at column 46 of expression: c.My_Controller.getRate('A', 'B'): Source"
调用方法的正确方法是什么?
您不能直接从 Lightning 客户端标记调用 Apex 服务器控制器方法。
相反,您需要在组件标记中声明 <aura:attribute>
并将值绑定到该属性。
<aura:attribute name="rate" type="String" />
<lightning:input type="string" name="res" aura:id="res" value="{! v.rate }" label="Result"/>
然后,您的 JavaScript client-side 控制器需要异步创建一个 server-side call,以从 Apex 获取值。最后,来自该异步方法的 Lightning JavaScript 回调会将 return 值填充到 <aura:attribute>
中,框架的数据绑定基础设施将负责更新 <lightning:input>
。
这听起来很复杂,但它主要是样板代码。上面链接的文档包含详细示例。
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);
}
})