通常,当我们考虑Lightning组件时,我们会考虑Lightning Experience中页面上的元素。换句话说,我们想到了前端设计 – 用户在页面上的交互。但是我们也可以构建根本没有任何前端标记的Lightning组件。但是你可能在想,为什么有人会那样做呢?因为我们也可以使用Lightning组件作为可重用的服务或服务组件。
在这一步结束之后,您将会:
- 了解服务组件的概念
- 检索选项列表值列表
- 传递两个组件之间的值
创建闪电组件
- 在开发者控制台中,选择 File > New > Lightning Component.
- 对于名称,输入: PickListValues 并单击 Submit.
请注意,我们没有检查任何框,因为我们不打算将这个组件作为一个独立的组件在页面上使用。相反,我们将其用作PropertyDialog组件的子组件,或者将其用作需要选项列表值的任何其他组件的子项。
- 将以下内容添加到<aura:component>标记内的组件中:
<aura:attribute name="sObjectName" type="String" /> <aura:attribute name="fieldName" type="String" /> <aura:attribute name="picklistValues" type="Object" />
- 保存文件。
检索选项列表值
- 在开发者控制台中,点击 File > New > Apex Class.
- 命名类: PickListController
- 将以下内容添加到 class:
@AuraEnabled public static List<String> getPickListValuesIntoList(String objectType, String selectedField){ List<String> pickListValuesList = new List<String>(); Schema.SObjectType convertToObj = Schema.getGlobalDescribe().get(objectType); Schema.DescribeSObjectResult res = convertToObj.getDescribe(); Schema.DescribeFieldResult fieldResult = res.fields.getMap().get(selectedField).getDescribe(); List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues(); for( Schema.PicklistEntry pickListVal : ple){ pickListValuesList.add(pickListVal.getLabel()); } return pickListValuesList; }
- 保存文件。
把它连接起来
- 在开发者控制台中,切换回PickListValues组件。
- 将controller =“PickListController”access =“global”添加到<aura:component>标记。
- 在aura属性之后的新行中,将以下内容添加到组件中:
<aura:handler name="init" value="{!this}" action="{!c.doInit}" />
- 保存文件。
- 单击侧面导航中的“控制器”以将控制器添加到组件。
- 将控制器中的代码替换为:
({ doInit : function(component) { var action = component.get("c.getPickListValuesIntoList"); action.setParams({ objectType: component.get("v.sObjectName"), selectedField: component.get("v.fieldName") }); action.setCallback(this, function(response) { var list = response.getReturnValue(); component.set("v.picklistValues", list); }) $A.enqueueAction(action); } })
这个非常简单的函数调用我们刚刚创建的Apex类的getPickListValuesIntoList方法,然后将它们存储在picklistValues属性中。
- 保存文件。
添加服务组件
- 在Developer Console中,切换到PropertyDialog组件。
- 在打开<aura:component>标记之后添加对PickListValues组件的引用:
<aura:attribute name="picklistValues" type="Object" /> <c:PicklistValues sObjectName="Property__c" fieldName="Status__c" picklistValues="{!v.picklistValues}" />
- 将<lightning:select>中的<option value =“status”> Status </ option>替换为:
<aura:iteration items="{!v.picklistValues}" var="item"> <option value="{!item}">{!item}</option> </aura:iteration>
- 保存该文件,然后刷新组织中的属性记录页面。
如果一切顺利,而不是“状态”一词,正确的值显示在您的状态选项列表中。
做得好! 现在我们需要做的就是连接组件,以便能够保存新的属性记录。