Salesforce的初学者,请耐心等待。 我已经创建了一个闪电组件,并且希望在页面上显示组件控制器返回的值。
SELECT statusid, status from B
但是它并不是那么简单:),因为我得到:“未能保存Rate.cmp:意外令牌:'('在表达式的第46列:c.My_Controller.getRate('A','B') :来源”
调用该方法的正确方法是什么?
答案 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);
}