0

I am creating a custom component for Lightning for Gmail.

I want to read the content of email body. I created a test component and a controller for it.

<aura:component implements="clients:availableForMailAppAppPage,clients:hasItemContext">
    <aura:attribute name="messageBody" type="String" />
    <ui:button label="Click" press="{!c.myAction}"/>
</aura:component>

myAction : function(component, event, helper) {
    console.log(component.get("v.messageBody"));
}

But in the console after clicking my button I see only "undefined".

At the same time, if for example I add to the controller console.log(component.get("v.people").from.name);, then in the console I can see the sender's name.

Also I tried to remove from the code line <aura:attribute name="messageBody" type="String" />, but nothing has changed.

What am I doing wrong?

1 Answer 1

0

the message body and people are populated at some point after your component has been created. A few suggested changes to your code:

  • Any attributes on an interface that you implement you do not need to specify in your component.
  • You'll want to listen to "change" events on the attributes you care about: <aura:handler name="change" value="{!v.people}" action="{!c.peopleChanged}" /> That will listen to changes to the people attribute. Your component is first created and then these attribute values are populated.
  • You can also do things like cmp.get('v.people.from.email') that will automatically check for null/undefined for you.

I hope this helps.

5
  • Thanks, Braden.I did as you said and event handler <aura:handler name="change" value="{!v.people}" action="{!c.peopleChanged}" /> is triggered, but event handler <aura:handler name="change" value="{!v.messageBody}" action="{!c.bodyChanged}" /> does not work. Any other ideas?
    – Vladimir
    Commented Mar 31, 2017 at 9:55
  • Hmm, that is strange, I copied your button and handler logic and was able to try this myself and it worked. Here's the source from my component: gist.github.com/nedarb/315464ae529ebad4c85280461b6b4fe9 Commented Apr 3, 2017 at 20:27
  • I created a new component, copied your code and created another page for GMAIL. But I still see "undefined" in log instead of the email body. This is really strange. i64.tinypic.com/2j4f4ew.png
    – Vladimir
    Commented Apr 4, 2017 at 6:53
  • At github.com the code is named "Custom Salesforce Lightning for Outlook component". Maybe you tried this code for Outlook, not for Gmail?
    – Vladimir
    Commented Apr 4, 2017 at 7:06
  • You are correct. This is in fact not working as it should. Let me poke around a little and figure out what's going on here. Commented Apr 5, 2017 at 16:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .