创建会话详细信息Web组件
在此步骤中,您将创建一个新的Web组件,该组件显示特定会议会话的详细信息。您还实现了一个简单的导航系统,该系统允许用户在会话列表和会话详细信息之间来回导航。
首先,让我们创建Web组件的JavaScript文件。
- 在现有
my
文件夹下,创建一个名为的新文件夹sessionDetails
。 - 在
sessionDetails
文件夹中,创建一个名为的新文件sessionDetails.js
。 - 实现了
sessionDetails
类,如下所示:我们使用
@api
装饰器将sessionId
setter方法定义为public。这样,您就可以提供标签sessionId
的属性my-session-details
。带注释的属性@api
是反应性的:当其值更改时,组件将自动重新呈现。 - 保存的
sessionDetails.js
文件。
现在,让我们在Web组件模板中创建用户界面。
- 在
sessionDetails
文件夹中,创建一个名为的新文件sessionDetails.html
。 - 实施模板,如下所示:
- 保存的
sessionDetails.html
文件。
接下来,让我们创建Web组件的CSS文件,以确保一切看起来都不错。
- 在
sessionDetails
文件夹中,创建一个名为的新文件sessionDetails.css
。 - 定义以下样式:
- 保存的
sessionDetails.css
文件。
而已!您创建了一个显示会议会话详细信息的Web组件。
要查看它的实际效果,您需要将其添加到应用程序中。
- 打开了
app.html
该文件app
的文件夹。 - 在标签之后添加以下
<my-session-list></my-session-list>
标签: - 保存的
app.html
文件。 - 打开该
app.js
文件。 - 在App类定义中定义一个属性:
- 保存的
app.js
文件。
返回浏览器,请注意该sessionDetails
组件未出现。这是因为sessionId
您刚刚定义的 属性app.js
尚未指向实际的sessionId。换句话说,应用程序不知道要显示哪个会话。这就提出了一个很好的问题:sessionDetails
组件应实际显示哪个会话?答案是:用户在sessionList组件中单击的会话!sessionList
组件如何通知应用程序单击了特定会话?通过调度自定义DOM事件。
现在,您已经创建了所有不同的组件,您需要在应用程序的不同方面显示它们,并确保不同的组件相互反应。首先,让我们修改sessionList
组件,使其在单击会话时触发一个事件。
- 打开该
sessionList.html
文件。 - 将以下属性添加到
<a>
标签:data-index={index} onclick={handleSessionClick}
它看起来像 - 保存的
sessionList.html
文件。 - 打开该
sessionList.js
文件。 - 在
handleSessionClick
函数SessionList
之后,将事件处理程序添加到类中handleSearchKeyInput
: - 保存的
sessionList.js
文件。
接下来,让我们在app
Web组件中监听该事件。
- 打开该
app.html
文件。 onnavigate
在my-session-list
标签上添加一个属性:- 保存的
app.html
文件。 - 打开该
app.js
文件。 - 在
handleNavigate
之后添加事件处理程序sessionId;
: - 保存的
app.js
文件。
返回浏览器,然后单击其中一个会话。现在,该会话的详细信息应出现在列表之后。
一切正常,但是滚动到列表底部以查看详细信息并不是很好的用户体验。您可以在列表的右侧显示详细信息,但这可能不适用于移动设备。在下一部分中,您将实现一个基本的导航系统,该系统允许用户导航到不同的视图。
导航是单页应用程序的重要组成部分。在此项目中,您将为应用程序使用两个状态(“列表”和“详细信息”)实现最小导航系统,并使用自定义事件在这些状态之间进行导航。
- 打开该
app.js
文件。 - 声明一个
state
产权后sessionId;
: - 修改的
handleNavigate
事件处理程序更改应用程序的基础上,自定义导航事件值的状态。 - 添加两个可以在组件模板中使用的getter函数,以检查应用程序的当前状态。
- 保存的
app.js
文件。 - 打开该
app.html
文件。 - 裹
<my-session-list>
在一个if:true
指令时,应用程序的状态是“清单”,只显示它: - 裹
<my-session-details>
在一个if:true
指令时,应用程序的状态是“细节”,只显示它: onnavigate
在my-session-details
标签上添加一个属性:- 保存的
app.html
文件。
接下来,让我们确保选择会话时更改状态。
- 打开该
sessionList.js
文件。 - 将
handleSessionClick
事件处理函数替换为: - 保存的
sessionList.js
文件。
接下来,让我们确保用户可以返回到会话列表。
-
- 打开该
sessionDetails.html
文件。 - 将会话标题替换为
<h2>{session.name}</h2>
:
- 打开该
- 保存的
sessionDetails.html
文件。 - 打开该
sessionDetails.js
文件。 - 将
handleSessionsClick
事件处理程序添加到sessionDetails
类中,紧接在sessionId
getter函数之后: - 保存的
sessionDetails.js
文件。
返回浏览器,然后单击其中一个会话。现在,会话列表显示单击的会话的详细信息视图。如果单击会话标题旁边的“会话”链接,则返回到会话列表。
很好!会议与会者单击特定的会议时,可以查看会议列表并导航到详细信息视图。为了将您学到的东西付诸实践,创建一个最终的Web组件,该组件在会话详细信息视图上显示扬声器卡。
首先,让我们创建Web组件的JavaScript文件。
- 在现有
my
文件夹下,创建一个名为的新文件夹speakerCard
。 - 在
speakerCard
文件夹中,创建一个名为的新文件speakerCard.js
。 - 实现
SpeakerCard
该类,如下所示: - 保存的
speakerCard.js
文件。
接下来,让我们创建Web组件的HTML模板。
- 在
speakerCard
文件夹中,创建一个名为的文件speakerCard.html
。 - 实施模板,如下所示:
- 保存的
speakerCard.html
文件。
接下来,让我们添加一些样式以确保一切都看起来不错。
- 在
speakerCard
文件夹中,创建一个名为的文件speakerCard.css
。 - 添加以下样式:
- 保存的
speakerCard.css
文件。
最后,让我们将扬声器卡添加到会话详细信息视图中。
- 打开该
sessionDetails.html
文件。 - 在
abstract
div之后添加以下标记: - 保存的
sessionDetails.html
文件。
返回浏览器窗口,然后单击列表中的会话。会话详细信息视图现在应该看起来像这样,包括扬声器卡。
恭喜,您已经成功创建了第一个Lightning Web Component开源应用程序!请查看本系列的下一个项目,在该项目中您可以修改应用程序以使用REST服务从Salesforce获取会议数据。您无需了解Salesforce即可执行下一个项目。我们将指导您完成所有步骤。