在Visualforce页面中使用Lightning组件
到目前为止,您已经学会了如何使您的Visualforce页面看起来像Lightning Experience,并学习了创建Lightning组件的基础知识。你甚至已经创建了一个很棒的Similar Properties组件。
但是还有最后一件事情要完成,这真是太神奇了。
我们将采用类似的属性组件,并在Visualforce中使用它!是的,你没看错。闪电组件不仅仅是闪电体验。使用闪电,我们可以在任何地方使用闪电组件!
第1部分 – 创建容器应用程序
要在Lightning体验外使用Lightning组件,我们需要将其封装在Lightning应用程序中。闪电应用程序基本上是一个闪电组件,它运行在自己的窗口中,没有典型的Lightning Experience UI(例如全局导航)。事实上,在这个项目中,您已经多次使用了Lightning应用程序。闪电应用程序生成器是一个闪电应用程序!
- 在开发者控制台中,点击 New > Lightning Application. 将其命名为SimilarPropertiesApp并选择Lightning Out Dependency App。
通过选择Lightning Out Dependency App,应用程序实现extends =“ltng:outApp”,它基本上告诉App使用Lightning Out框架。
- 为组成SimilarProperties组件的三个组件中的每个组件添加一个依赖关系 – 用以下代码替换缺省代码:
<aura:application extends="ltng:outApp" > <aura:dependency resource="c:SimilarProperties" /> <aura:dependency resource="c:SimilarProperty" /> <aura:dependency resource="c:SimilarPropertyEdit" /> <aura:dependency resource="markup://force:*" type="EVENT"/> </aura:application>
- 保存文件。
第2部分 – 更新Visualforce页面
由于我们已经有一个嵌入在Property Record页面中的Visualforce页面,所以我们可以更新标记来使用Similar Properties组件。
- 在开发人员控制台中,选择 File > Open Resource, 然后打开“Similar_Properties.vfp”页面。
- 更新页面如下:
<apex:page standardController="Property__c" standardStylesheets="false" applyBodyTag="false"> <style> html, body { margin: 0; padding: 0; } #lightningComponent {width: 100%;} </style> <div id="content"> <div id="lightningComponent" /> </div> </apex:page>
第3部分 – 在Visualforce页面中加载SimilarProperties组件
- 在打开的<apex:page>标签之后立即添加<apex:includeLightning />标签。
该指令在页面中包含Lightning Out框架。
- 在关闭</ apex:page>标记之前立即添加以下JavaScript代码:
<script> var recordId = '{!Property__c.Id}'; var myUserContext = "{!$User.UITheme}"; $Lightning.use("c:SimilarPropertiesApp", function() { $Lightning.createComponent("c:SimilarProperties", {recordId: recordId}, "lightningComponent", function(cmp) { $A.eventService.addHandler({ event: 'force:navigateToSObject', handler: function(event) { if (myUserContext == 'Theme4t' || myUserContext == 'Theme4d') { // Visualforce页面位于S1或Lightning Experience中 sforce.one.navigateToSObject(event.getParams().recordId); } else if (myUserContext == 'Theme3') { // Visualforce页面正在Classic中运行 window.parent.location = '/' + event.getParams().recordId; } else { console.log("Unsupported theme"); } } }); } ); }); </script>
- 保存文件。
- 刷新“属性记录”页面并向下滚动到“类似属性”部分以查看组件。
雷电体验类似的属性部分。多么酷啊?这是Lightning页面中Visualforce页面中的闪电组件。这是一个Salesforce Turducken!
- 单击组件中的“属性名称”以确认导航正在工作。
- 点击您的个人资料图片,然后选择切换到Salesforce Classic。
- 在最近的项目列表中点击一个属性。
- 向下滚动以查看在Salesforce Classic中运行的美丽的Lightning组件!
- 单击组件中的不同Property Name,然后使用脚本中的window.location方法导航到正确的记录。
- 点击你的名字,然后选择切换 Switch back to Lightning Experience.
轻拍自己的背部!您不仅创建了令人惊叹的Lightning组件,还了解了在Visualforce中利用Lightning组件的轻松方式,无论您是在Lightning Experience中还是在Salesforce Classic中使用Visualforce页面。接下来的步骤中,您可能需要编辑页面布局编辑器中的页面布局,以使Visualforce页面的空间更高一些。但是我们会把这个留给你。现在是时候吹嘘一下,去展示你的同事们!