Salesforceで呼び出したカスタムコンポーネントのメソッドにアクセス

イシュー

  • Salesforceで呼び出したカスタムコンポーネントのメソッドに、親のページ(呼び出し元)からアクセスできないんだけど、、
  • どやってやんの?

参考

呼び出し元から、カスタムコンポーネントのメソッドにアクセスはできていた

  • アクセスはできていたけど、カスタムコンポーネントのメソッドは非同期で動作するから、メソッドの返り値が取得できない
    • apex:actionFunction で呼び出しを行ったcallback関数内で処理させることってできるだろうか?

      参考

  • JavaScript Remoting for Apex Controllers

ActionStatus

<apex:commandButton action="{!reloadParam}" value="GO" rerender="dialogPanel" status="loadComponent" onClick="jQuery('#dialog-modal').dialog('open');"/>
<!-- ロード中ステータス表示  -->
<apex:actionFunction name="refreshParent" action="{!refreshParent}" rerender="refreshParent" status="loadParent" />
<apex:actionStatus id="loadParent">
  <apex:facet name="start">
    <img src="{!$Resource.CommonStyle}/images/loading.gif" width="24" height="24"/>
  </apex:facet>
</apex:actionStatus>
  • これの意味は、[Go]をクリックしたら、reloadParam実行
    • ステータス:loadComponent へ
  • actionFunction のステータスにloadParent設定
  • loadParentのスタート時は、loading.gifを設定
  • [GO]ボタンのonClickで、ダイアログが呼び出されると同時に、コンポーネント内のactionStatus(loadComponent)を呼び出し、ローディングアイコンを表示するようにしています。

とりあえず、ActionStatusで同期する書き方が分からないので、SetTimeoutで回避

参考

dialog の中でcallback

参考