В компонентах Salesforce Aura обычно требуется получить идентификатор текущей записи и имя объекта. Эта информация может иметь решающее значение для выполнения различных операций, таких как получение связанных данных, выполнение вызовов API или динамическое отображение информации. В этой статье мы рассмотрим несколько методов выполнения этой задачи на примерах кода.
Метод 1: использование интерфейса Force:hasRecordId
Компоненты Aura, реализующие интерфейс force:hasRecordId, имеют доступ к атрибуту v.recordId, который содержит идентификатор текущей записи.. Чтобы получить имя объекта, вы можете использовать поставщик глобальных значений $ObjectType.
Пример кода:
<aura:component implements="force:hasRecordId">
<aura:attribute name="recordId" type="Id" />
<aura:attribute name="objectName" type="String" />
<aura:handler name="init" value="{!this}" action="{!c.init}" />
<div>
Current Record ID: {!v.recordId}
</div>
<div>
Object Name: {!v.objectName}
</div>
</aura:component>
({
init: function(component, event, helper) {
component.set("v.objectName", $A.get("$ObjectType.Account").ApiName);
}
})
Метод 2: использование JavaScript в компонентах Aura
Вы можете использовать JavaScript в контроллере или помощнике вашего компонента Aura для извлечения идентификатора записи и имени объекта с помощью методов getRecordId()и $ObjectTypeпоставщик глобальных значений соответственно.
Пример кода:
<aura:component>
<aura:attribute name="recordId" type="Id" />
<aura:attribute name="objectName" type="String" />
<aura:handler name="init" value="{!this}" action="{!c.init}" />
<div>
Current Record ID: {!v.recordId}
</div>
<div>
Object Name: {!v.objectName}
</div>
</aura:component>
({
init: function(component, event, helper) {
component.set("v.recordId", helper.getRecordId());
component.set("v.objectName", helper.getObjectName());
},
getRecordId: function() {
return component.get("v.recordId") || component.get("v.pageReference").state.recordId;
},
getObjectName: function() {
return $A.get("$ObjectType.Account").ApiName;
}
})
Метод 3. Использование контроллера Apex
Если вам нужен доступ к текущему идентификатору записи и имени объекта на стороне сервера, вы можете создать метод контроллера Apex и вызвать его из компонента Aura.
Пример кода:
<aura:component controller="MyController">
<aura:attribute name="recordId" type="Id" />
<aura:attribute name="objectName" type="String" />
<aura:handler name="init" value="{!this}" action="{!c.init}" />
<div>
Current Record ID: {!v.recordId}
</div>
<div>
Object Name: {!v.objectName}
</div>
</aura:component>
({
init: function(component, event, helper) {
var action = component.get("c.getCurrentRecordInfo");
action.setCallback(this, function(response) {
var state = response.getState();
if (state === "SUCCESS") {
var result = response.getReturnValue();
component.set("v.recordId", result.recordId);
component.set("v.objectName", result.objectName);
}
});
$A.enqueueAction(action);
}
})
public class MyController {
@AuraEnabled
public static Map<String, String> getCurrentRecordInfo() {
Map<String, String> recordInfo = new Map<String, String>();
recordInfo.put('recordId', ApexPages.currentPage().getParameters().get('recordId'));
recordInfo.put('objectName', 'Account');
return recordInfo;
}
}
В этой статье мы рассмотрели несколько методов поиска текущего идентификатора записи и имени объекта в компонентах Aura. Используя интерфейс force:hasRecordId, JavaScript или контроллеры Apex, вы можете легко получить доступ к этой информации и использовать ее для различных целей в своих приложениях Salesforce Lightning.