2

I need to put a Button in the record Detail View that executes some code through aura componenet.

I've generated a lightning app and put it into a visualforce page that has been set behind the button.

<apex:page showHeader="true" sidebar="true" standardcontroller="Lead">
<apex:includeScript value="/lightning/lightning.out.js" />

<div id="lightning" />

<script>
    $Lightning.use("c:ExposeChangeOwnerVF", function() {
      $Lightning.createComponent("c:CambioOwner",
      { label : "",
      recordId : '{!Lead.Id}' },
      "lightning",
      function(cmp) {

      });
    });
</script>

Now I want to refresh the page after the component has done the callback:

 if(state === "SUCCESS"){
            console.log('step 3');

            $A.get("e.force:refreshView").fire();

But when I click the button I get this error:

This page has an error. You might just need to refresh it. Error in $A.getCallback() [Cannot read property 'setParams' of undefined] Callback failed: apex://CambioOwner_Controller/ACTION$changeOwnerForSelectedRecord Failing descriptor

It seems that the problem shows up only when I embed the component into the visualforce through the lightning app, but If I use it as a quick action it work without any errors.

Do you have any suggestion?

6

Lightning statndard events like $A.get("e.force:refreshView").fire(); are not supported when lightning component is used in visual force pages.

| improve this answer | |
  • So there is no way to do that? I would like to refresh the detail view after some field update are done! – Fabio Maturo Jul 4 '17 at 12:29
  • Can you please tell me if what was the need to use the vf page insted of using lightning component directly? – Rishi Golyan Jul 4 '17 at 12:37
  • I don't want to show the modal that it's open while executing a quick action. – Fabio Maturo Jul 4 '17 at 12:45
  • Looks like there is not a direct way but what you can do is creating your own refresh method and re-initializing the variables. – Rishi Golyan Jul 4 '17 at 13:20
  • So far, I've just set the Height of quick action modal to 0% and by using the force:closeQuickAction the user will view the modal only for second! I hope SF will improve this functionality! – Fabio Maturo Jul 4 '17 at 13:23
0

In visualforce pages you can use sforce.one methods. So if it suits you you can reload existing page by using sforce.one.navigateToURL(..)

 <apex:outputPanel rendered="{!redirectURL!=''}">            
             <script type="text/javascript">
                  sforce.one.navigateToURL('{!redirectURL}');                  
            </script>
  </apex:outputPanel>
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.