显示从控制器方法返回的值

时间:2019-07-09 18:36:46

标签: salesforce apex salesforce-lightning aura-framework

Salesforce的初学者,请耐心等待。 我已经创建了一个闪电组件,并且希望在页面上显示组件控制器返回的值。

SELECT statusid, status from B

但是它并不是那么简单:),因为我得到:“未能保存Rate.cmp:意外令牌:'('在表达式的第46列:c.My_Controller.getRate('A','B') :来源”

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

2 个答案:

答案 0 :(得分:1)

您不能直接从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客户端控制器需要异步创建server-side call才能从Apex获取值。最后,来自该异步方法的Lightning JavaScript回调会将返回值填充到<aura:attribute>中,框架的数据绑定基础结构将负责更新<lightning:input>

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

答案 1 :(得分:1)

public final MutableLiveData<Boolean> userNameErrorVisibility = new MutableLiveData<>();


@BindingAdapter({"error", "errorMsg"})
public static void setError(TextInputLayout view, boolean isValid, String errorMsg){
    String errorString = isValid ? null : errorMsg;
    view.setError(errorString);
}
public void onUserNameTextChanged(CharSequence text, int startPosition, int beforePosition, int count) {
    if(text.toString().isEmpty()) {
        userNameErrorVisibility.postValue(false);
        return;
    }
    //If valid email then make `userNameErrorVisibility` true else set false
    userNameErrorVisibility.postValue(true);
}