【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.