【Salesforce】VisualforceからLightning Componentを呼び出す
少し前に書いたように、Lightningでの開発が増えてきています。
しかし、Lightning Componentを作っても、「私のドメイン」を設定しなければLightningアプリケーションに配置できないんですよね。
そんなわけで、VisualforceからLightningコンポーネントを呼び出すことになるわけです。
標準のLightning Componentを配置する際の例です。
まず、配置したいコンポーネントを外部で使用可能にする必要があります。
開発者コンソールから、新規にLightning Applicationを作成します。
Lightningのボタンを使用する場合です。
<aura:application access="GLOBAL" extends="ltng:outApp"> <aura:dependency resource="ui:button"/> </aura:application>
作成した「lcvfTest.app」を、VisualforceのJavaScriptで呼び出します。
<apex:page>
  
  <apex:includeLightning />
<div id="lightning" ></div>
<script>
// ページ読み込み時の処理を設定する
document.addEventListener('DOMContentLoaded', function() {
   // Lightning Componentの呼び出しを行う
   loadLightningComponent();
});
// Lightning Componentの呼び出しを行う
function loadLightningComponent(){
    // Lightning Componentを使用する準備
    $Lightning.use("c:lcvfTest", function() {
        // 準備完了時のコールバック
        // Lightning Componentのui:buttonを作成する
        createLightningButton();
    });
}
// Lightning Componentのui:buttonを作成する
function createLightningButton(){
    var element;
    var options;
    
    // Lightning Componentを作成する対象の要素を取得する
    element = document.getElementById('lightning');
    
    // ボタンに設定するオプションを設定する
    options = {};
    options.label = '保存';
    // 準備完了時のコールバック
    // Lightning Componentを呼び出す
    $Lightning.createComponent(
        "ui:button",
        options,
        element.id,
        function(cmp) {
            
            // コンポーネント作成後のコールバック
            console.log('created');
        }
    );
}
</script>
</apex:page>
$Lightning.useでlcvfTest.app内で定義したコンポーネントを使用できるようにし、$Lightning.createComponentで実際にボタンを作成しています。
「apex:includeLightning」のタグがないとエラーになるので注意してください。
自分で作成したコンポーネントにaura:attributeが設定されていれば、optionsに値を渡すことが出来ます。
idのリストを渡してコンポーネント側で読み込むことも可能です。
リストを渡す場合は配列でOKです。
No comments.