Это мой первый раз, когда я создаю компонент молнии, и я борюсь с одним его аспектом (хотя я уверен, что мой код ниже также имеет несколько других ошибок). В моей записи о деле есть поле, в котором есть поиск учетной записи. Учетная запись имеет номер телефона, адрес электронной почты и имя. Запись учетной записи также имеет значение поля, называемое TCode, которое всегда будет заполнено. Мой компонент освещения, который будет находиться на странице освещения корпуса, должен отображать информацию об учетной записи, а также всю связанную информацию об учетной записи. Мы делаем это, переходя к учетной записи в деле и запрашивая все учетные записи со значением TCode. Поэтому я написал свой апекс-контроллер следующим образом:

    public class CS_fetchAccountDetails {

    Private static Id FieldOfficeRTId = Schema.SObjectType.Account.getRecordTypeInfosByName().get('Field Office').getRecordTypeId();
    private static Case c;

    @AuraEnabled
    public static List<Account> fetchAccountList(Id caseId){
        c = [select Id, AccountId from Case WHERE Id=:caseId];

        Account acct = [SELECT Id, NSS_Territory_Code__c FROM Account where Id=:c.AccountId];

        return [select Id, Name, NSS_Territory_Code__c, Field_Office_Email__c, Phone, BillingAddress, RecordTypeId from Account WHERE NSS_Territory_Code__c =:acct.NSS_Territory_Code__c AND RecordTypeId =:FieldOfficeRTId];

    }

}

Опять же, часть, с которой я борюсь, заключается в том, как передать значение поля Tcode в вершину в моем компоненте освещения. Кроме того, мой LC, кажется, ориентирован на учетную запись, хотя на самом деле он должен быть на деле, а затем перейти к учетной записи, указанной в записи дела. Может кто-нибудь посмотреть мой код и указать мою ошибку и что мне нужно исправить/добавить?

КаждыйAccountonCase.cmp:

<aura:component >
    implements="flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes" access="global" >

    <aura:attribute name="accountName" type="String" />

    <aura:attribute name="phoneNumber" type="String" />

    <aura:attribute name="fieldEmail" type="String" /> 

    <aura:attribute name="fieldAddress" type="Address" />

    <aura:attribute name="territoryCode" type="String" />



        <div class="slds-tile__detail">

            <dl class="slds-list_horizontal slds-wrap">

                <dt class="slds-item_label slds-text-color_weak slds-truncate" title="First Label">Account Name:</dt>

                <dd class="slds-item_detail slds-truncate" title="Description for first label">{!v.accountName}</dd>

                <dt class="slds-item_label slds-text-color_weak slds-truncate" title="Second Label">Phone Number:</dt>

                <dd class="slds-item_detail slds-truncate" title="Description for second label">{!v.phoneNumber}</dd>

                <dt class="slds-item_label slds-text-color_weak slds-truncate" title="Territory Code Label">Territory Code:</dt>

                <dd class="slds-item_detail slds-truncate" title="Description for territory code label">{!v.territoryCode}</dd>

                <dt class="slds-item_label slds-text-color_weak slds-truncate" title="Third Label">Field Office Email:</dt>

                <dd class="slds-item_detail slds-truncate" title="Description for Third label">{!v.fieldEmail}</dd>  

                <dt class="slds-item_label slds-text-color_weak slds-truncate" title="Fourth Label">Field Office Address:</dt>

                <dd class="slds-item_detail slds-truncate" title="Description for Fourth label">{!v.fieldAddress}</dd>

                </dl>

        </div>



</aura:component>

AccountListonCase.cmp:

    <aura:component controller="fetchAccountDetails" implements="flexipage:availableForAllPageTypes" access="global" >

<aura:attribute name="recordId" type="Id" />        
<aura:attribute name="accountList" type="account[]" />

        <aura:handler name="init" value="{!this}" action="{!c.doInit}" />  

        <div class="demo-only" style="width: 30rem;">

        <article class="slds-tile">

            <h3 class="slds-tile__title slds-truncate" title="Field Office Information"><a href="javascript:void(0);">Field Office Information</a></h3>

            <aura:iteration items="{!v.accountList}" var="item">

                <c:eachAccountonCase accountName="{!item.Name}" phoneNumber="{!item.Phone}" fieldEmail="{!item.Email}" fieldAddress = "{!item.BillingAddress}" territoryCode="{!item.NSS_Territory_Code}" />

                <br/>

            </aura:iteration>
            </article>

        </div>

    </aura:component>

Учетная запись ListonCaseController.js:

    ({
    doInit : function(component, event, helper) {
        //var territory = component.get("v.territoryCode");
        var action = component.get("c.fetchAccountList");       
        action.setParams({
            "caseId": component.get("v.recordId")
        });

        action.setCallback(this, function(data){
            component.set("v.accountList", data.getReturnValue());
        });       

        $A.enqueueAction(action);

                }

})

MainApp :

<aura:application extends="force:slds">
    <c:accountListonCase />
</aura:application>
0
user3688231 15 Мар 2020 в 22:36

1 ответ

Лучший ответ

Обновление: Пожалуйста, прочитайте о force:hasRecordId здесь.

  1. Вам необходимо реализовать force:hasRecordId в компоненте accountListonCase.
  2. Вы не должны не определять атрибут recordId в cmp аккаунта accountListonCase.
  3. v.recordId заполняется, только если компонент добавлен на страницу записи.


Метод setParams используется для передачи параметров в методы с поддержкой Aura в контроллерах Apex.

В этой строке

action.setParams({"territoryCode": territory});

Метод setParams принимает объект JSON, где аргумент key должен соответствовать имени параметра, определенному в вашем контроллере Apex. Поэтому вы должны изменить строку как:

action.setParams({tCode: territory}); // Passing parameters at once.

Или

action.setParam('tCode', territory); // Passing parameters one at a time

Вы также можете временно поместить журнал консоли, чтобы убедиться, что вы получаете ценность территории.

1
sfdcfox 16 Мар 2020 в 07:53
Я обновил свой код выше. Вершина изменилась. Кроме того, то, что вы упомянули, не было основной проблемой. Я просто неправильно написал/скопировал. У меня не было атрибута recordId (не уверен, правильно ли я поставил его или нет). Но у меня последний код и он не работает
 – 
user3688231
15 Мар 2020 в 21:55
Ваш последний код еще не отображается.
 – 
manjit5190
15 Мар 2020 в 21:58
Что ты имеешь в виду @manjit5190? Мой апекс теперь значительно отличается, и я добавил строку recordId в компонент accountListonCase. Вы не видите моих изменений? Но на данный момент с моим последним кодом я не знаю, в чем проблема и как мне отобразить все учетные записи в моей истории болезни. Спасибо!
 – 
user3688231
15 Мар 2020 в 22:06