【问题标题】:Display value as returned from controller method显示从控制器方法返回的值
【发布时间】:2019-07-09 18:36:46
【问题描述】:

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:意外令牌:'(' at column 46 of expression: c.My_Controller.getRate('A', 'B') : 来源"

调用方法的正确方法是什么?

【问题讨论】:

    标签: salesforce apex salesforce-lightning aura-framework


    【解决方案1】:

    您不能直接从 Lightning 客户端标记调用 Apex 服务器控制器方法。

    相反,您需要在组件标记中声明 &lt;aura:attribute&gt; 并将值绑定到该属性。

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

    然后,您的 JavaScript 客户端控制器需要异步创建 server-side call,以从 Apex 获取值。最后,来自该异步方法的 Lightning JavaScript 回调会将返回值填充到 &lt;aura:attribute&gt;,并且框架的数据绑定基础架构将负责更新 &lt;lightning:input&gt;

    这听起来很复杂,但主要是样板代码。上面链接的文档包含详细的示例。

    【讨论】:

      【解决方案2】:
      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);
          }
          })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-24
        • 2012-02-21
        • 1970-01-01
        • 2017-09-05
        • 2016-01-19
        相关资源
        最近更新 更多