Я установил следующий пакет:

https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000Ev8qpUAB

Требование:

Здесь я пытаюсь сохранить «RelatedTOFied (Account)» объекта события, когда я передал это «Related toField» для разделения, тогда я получил ошибку.

Например:

     <aura:attribute name="acc" type="Account" default="0015B00000SSUQaQAP"/>

Как я могу установить значение по умолчанию и заставить мой код работать?. Если передано поле «whatId», его попытка броска разыменовать нулевой объект (пожалуйста, проверьте мои комментарии в коде), и если я удалю код в «whatId: календарь работает

Фрагменты кода:

<aura:component implements="force:appHostable,forceCommunity:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId" access="global" controller="s360_AnyEventCalCtrl">
<ltng:require scripts="{!join(',', $Resource.AnyEventCal + '/moment.min.js', $Resource.AnyEventCal + '/moment-timezone.min.js', $Resource.AnyEventCal + '/jquery.min.js', $Resource.AnyEventCal + '/fullcalendar.min.js')}"
              afterScriptsLoaded="{!c.scriptsLoaded}" />
<aura:attribute name="sObjectLabel" type="String" default="Event"/>
<aura:attribute name="sObjectName" type="String" default="Event"/>
<aura:attribute name="titleField" type="String" default="Subject"/>
<aura:attribute name="startDateTimeField" type="String" default="StartDateTime"/>
<aura:attribute name="endDateTimeField" type="String" default="EndDateTime"/>
<aura:attribute name="descriptionField" type="String" default="Description"/>
<aura:attribute name="userField" type="String" default="OwnerId"/>
<aura:attribute name="acc" type="string" default="0015B00000SSUQaQAP"/>
<aura:attribute name="filterByUserField" type="Boolean" default="true"/>
<aura:attribute name="eventsMap" type="Map"/>
<aura:attribute name="calendarButtons" type="String"/>
<aura:attribute name="weekends" type="Boolean" default="true"/>
<aura:attribute name="eventBackgroundColor" type="String" default="#CFEBFE"/>
<aura:attribute name="eventBorderColor" type="String" default="#ffffff"/>
<aura:attribute name="eventTextColor" type="String" default="#00396b"/>
<div class="slds">
 <div class="slds-card"> 
        <c:s360_EventCalendar objectLabel="{!v.sObjectLabel}"
                                   events="{!v.eventsMap}" 
                                   sObjectName="{!v.sObjectName}" 
                                   titleField="{!v.titleField}"
                                   startDateTimeField="{!v.startDateTimeField}"
                                   endDateTimeField="{!v.endDateTimeField}"
                                   descriptionField="{!v.descriptionField}"
                                   userField="{!v.userField}"
                                   calendarButtons="{!v.calendarButtons}"
                                   weekends="{!v.weekends}"
                                   eventBackgroundColor="{!v.eventBackgroundColor}"
                                   eventBorderColor="{!v.eventBorderColor}"
                                   eventTextColor="{!v.eventTextColor}"/>
   </div> 
</div>

({
 scriptsLoaded : function(component, event, helper) {
   helper.getEvents(component, event);
   }
 })

  ({
      getEvents : function(component, event) {

    var action = component.get("c.getEvents");
    action.setParams({ 
        sObjectName : component.get("v.sObjectName"),
        titleField : component.get("v.titleField"),
        startDateTimeField : component.get("v.startDateTimeField"),
        endDateTimeField : component.get("v.endDateTimeField"),
        descriptionField : component.get("v.descriptionField"),
        userField : component.get("v.userField"),
        filterByUserField : component.get("v.filterByUserField"),
        "whatId":component.get("v.acc")

    });

    action.setCallback(this, function(response) {
        var state = response.getState();
        if (state === "SUCCESS") {
          //alert('event map values###'+JSON.stringify(response.getReturnValue()));
            component.set("v.eventsMap",response.getReturnValue());

        } 
    });

    $A.enqueueAction(action);
} })

   @AuraEnabled
public static List<EventObj> getEvents(String sObjectName, String titleField, String startDateTimeField, String endDateTimeField, String descriptionField, String userField, Boolean filterByUserField,string whatId){

    String q = 'SELECT Id,' + 
        String.valueOf(titleField) + ',' + 
        String.valueOf(startDateTimeField) + ',' +
        String.valueOf(endDateTimeField) + ',' +
        String.valueOf(descriptionField) + ',' +
        String.valueOf(whatId) + ',' +
        String.valueOf(userField) + ' FROM ' + 
        String.valueOf(sObjectName) + ' WHERE ' + 
        String.valueOf(userField) + ' = \'' + UserInfo.getUserId() + '\'';
        if (!filterByUserField) {
        q = 'SELECT Id,' + 
            String.valueOf(titleField) + ',' + 
        String.valueOf(startDateTimeField) + ',' +
        String.valueOf(endDateTimeField) + ',' +
        String.valueOf(descriptionField) + ',' +
        String.valueOf(whatId) + ',' +
        String.valueOf(userField) + ' FROM ' + 
        String.valueOf(sObjectName);
    } 

    List<sObject> sObjectList = Database.query(q);
    system.debug('sobject list@@@@@'+sObjectList);
    List<EventObj> eventRecords = new List<EventObj>();
    if(isAccessible(sObjectName)) {
        for (sObject obj : sObjectList) {
            EventObj newEv = new EventObj(obj.Id,
                                          String.valueOf(obj.get(titleField)),
                                          DateTime.valueOf(obj.get(startDateTimeField)),
                                          DateTime.valueOf(obj.get(endDateTimeField)),
                                          String.valueOf(obj.get(descriptionField)),
                                          String.valueOf(obj.get(userField))

                                         );
            eventRecords.add(newEv);
        }
    }
    return eventRecords;
}

Я получил следующую ошибку: введите здесь описание изображения

-2
SFDCLearner 31 Май 2018 в 11:52
Вам не нужно применять JSON.parse к атрибуту, который является простой константой. Также в вашем опубликованном .cmp отсутствует атрибут con, на который ссылается ваш JavaScript, что затрудняет предложение чего-либо еще. Также измените заголовок, если вопрос изменился.
 – 
Keith C
31 Май 2018 в 10:57
Я уже удалил этот код. при обновлении вопроса я не обновлял его...
 – 
SFDCLearner
31 Май 2018 в 11:54

1 ответ

Лучший ответ

Тип вашего атрибута Account, но вы передаете String. Поэтому вам нужно изменить его на тип атрибута String, чтобы правильно сохранить значение.

<aura:attribute name="acc" type="String" default="0015B00000SSUQaQAP"/>
0
Tushar Sharma 31 Май 2018 в 10:31
Я сделал это изменение. Я получил эту ошибку. Я обновил вопрос
 – 
SFDCLearner
31 Май 2018 в 10:37
Как уже упоминал KeithC, вы можете попробовать их. Также вместо редактирования существующего вопроса будет лучше, если вы опубликуете новый вопрос с соответствующими подробностями и закроете этот вопрос.
 – 
Tushar Sharma
31 Май 2018 в 11:20
Не могли бы вы закрыть этот пост. Я опубликую квест с соответствующими подробностями
 – 
SFDCLearner
31 Май 2018 в 11:56
Как только вы примете любой ответ, этот пост будет помечен как закрытый.
 – 
Tushar Sharma
31 Май 2018 в 11:59