当前位置: 代码迷 >> 综合 >> Salesforce Lightning 动态初始化选项列表
  详细解决方案

Salesforce Lightning 动态初始化选项列表

热度:86   发布时间:2023-12-19 02:01:31.0

1.通过集合初始化方式

  • component中声明一个属性,并在选项列表控件使用
<aura:attribute name="departs1" type="Department__c[]" />
<lightning:select aura:id="D1" label="事业部" class="dynamic" value="{!v.d1Selected}" onchange="{!c.d1Change}"><option value="">请选择</option><aura:iteration items="{!v.departs1}" var="dep"><option value="{!dep.Id}" label="{!dep.Name}"></option></aura:iteration></lightning:select>
  • JS初始化时从后台获取集合的值,获取后赋值给attribute

js Controller:

init: function(component, event, helper) {
    //初始化事业部的值var depart_action = component.get("c.getD1");depart_action.setCallback(this, function(response) {
    if (response.getState() == "SUCCESS") {var departs = response.getReturnValue();if (departs != null && departs.length > 0) {component.set("v.departs1", departs);console.log('Get Department1 SUCCESS!!!');} else {console.log('Get Department1 Failed!!!');}} else {console.log('Get Department1 Failed: ' + response.getState());}});$A.enqueueAction(depart_action);}

apex Controller:

//获取D1事业部@AuraEnabledpublic static List<Department__c> getD1(){return [select Id,Name,Parent_Code__c from Department__c where Is_Active__c = true];} 

2.通过JS添加option方式

参考: https://salesforce.stackexchange.com/questions/133455/how-can-we-make-uiinputselect-in-lightning-to-dynamically-get-values-from-an-ob

component 代码:

<ui:inputSelect label="Status" class="dynamic" aura:id="InputSelectDynamic" value="{!v.leadObj.Status}" required="true"/> 

js controller:

doInit : function(component, event, helper) {
    var action = component.get("c.getLeadStatus");var inputsel = component.find("InputSelectDynamic");var opts=[];action.setCallback(this, function(a) {
    for(var i=0;i< a.getReturnValue().length;i++){opts.push({
   "class": "optionClass", label: a.getReturnValue()[i], value: a.getReturnValue()[i]});}inputsel.set("v.options", opts);});$A.enqueueAction(action); 
}

apex:controller:

public static List<String> getLeadStatus(){
List<String> options = new List<String>();
Schema.DescribeFieldResult fieldResult = lead.status.getDescribe();
List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
for (Schema.PicklistEntry f: ple) {options.add(f.getLabel());
}return options;}
  相关解决方案