你将构建: 一个文章列表,带有点击即可打开的筛选面板,可按作者筛选,并用提示消息确认每次变化
请先阅读: 显示 API 数据
在本教程中,你将无需写代码,就让页面对访客的操作做出反应。你会添加页面变量,通过点击打开和关闭面板,用表达式筛选列表,并在变量变化或页面加载时运行步骤。你将从显示 API 数据中构建的文章列表开始。
添加页面变量
加载更多文章
打开带有
posts查询的页面,点击左侧边栏底部的 Data。选中posts查询,把 Path 改为/posts?_limit=30。前 30 篇文章来自三位作者,userId分别为 1、2 和 3。为面板添加变量
在 Page variables 旁点击 +,选择 Boolean。变量名为
isOpen,初始值为false。它表示筛选面板是否打开。为筛选添加变量
再次点击 +,选择 Number。把它重命名为
userId,默认值保留为0,表示“所有作者”。
打开和关闭面板
添加按钮和面板
回到画布,在列表上方添加一个 Button,把它的 Text 设为
Filters。在它下方绘制一个名为Filter panel的框架,放入三个按钮:All authors、Author 1和Author 2。只在打开时显示面板
选中
Filter panel。在 Visibility 中,点击 Show when 旁的绑定按钮,输入vars.isOpen。由于isOpen为false,面板从画布上消失。添加点击工作流
选中
Filters按钮。在 Events 中保留 Click,点击 Add workflow。Logic 工作区会打开一个新的客户端工作流,它的触发器就是点击该按钮。切换变量
在 Steps 中点击 Add step,选择 Set variable。把 Variable 设为
isOpen,Value 设为!vars.isOpen。现在每次点击都会在true和false之间切换。试一试
点击 Run in preview。底部的 Run log 会显示该步骤,面板出现在画布上。再运行一次即可隐藏面板。
运行工作流会在画布上显示和隐藏 Filter panel,Run log 每次运行列出一个 Set variable 步骤。
筛选列表
用表达式筛选条目
选中集合列表。在 Collection list 中,点击 Items 旁的绑定,替换为:
jsvars.userId === 0 ? queries.posts.data : queries.posts.data.filter(p => p.userId === vars.userId)当
userId为0时,列表显示所有文章;否则只保留该作者的文章。点击时设置作者
选中
Author 1按钮,在 Events 中添加点击工作流。添加一个 Set variable 步骤,Variable 为userId,Value 为1。对Author 2做同样的操作,值为2。重置筛选
选中
All authors,添加点击工作流,再为userId添加一个 Reset variable 步骤。它会把变量恢复为默认值0。
变量变化时做出反应
在变量变化时启动工作流
在 Logic 工作区中点击 +(Add workflow),选择 Variable changes。在 Trigger 中,把 Variable 设为
userId。无论是哪个按钮改变了筛选,这个工作流都会在每次变化时运行。关闭面板
添加一个 Set variable 步骤,Variable 为
isOpen,Value 为false。用提示消息确认
添加一个 Show toast 步骤。在 Message 旁点击 Use an expression,输入:
jsvars.userId === 0 ? 'Showing all posts' : `Showing posts by author ${vars.userId}`把 Variant 设为 Success。
测试整个页面
按 ⌘↵ 预览。点击 Filters,再点击 Author 2:面板关闭,列表只显示该作者的文章,并弹出提示消息确认。点击 Filters 和 All authors,即可再次看到所有文章。按 ⌘↵ 回到编辑状态。
在预览中,选择作者会关闭面板、筛选列表并显示提示消息。
页面加载与导航
页面加载时问候访客
点击 +(Add workflow),选择 Page load。添加一个 Show toast 步骤,消息为
Use Filters to pick an author,变体为 Info。每次打开页面时它都会运行一次。把访客带到另一个页面
在列表下方添加一个
Contact us按钮,为它添加一个带 Go to page 步骤的点击工作流。在 Destination 中,选择你的某个页面,输入/contact这样的路径,或粘贴一个完整的 URL。只跳转到某个页面的按钮不需要工作流:在它的 Link 分区中设置 Target 即可。当需要先运行其他步骤,或目标取决于某个步骤的结果时,再使用 Go to page。
发布
点击 Publish 并试用预发布页面。工作流在访客的浏览器中运行,所以面板、筛选和提示消息在线上站点同样有效。
你的页面可以打开筛选面板、按作者筛选列表、对每次变化做出反应,并链接到另一个页面。
你学到了什么
- 页面变量保存页面的状态;Show when 和 Items 等绑定会读取它们。
- 客户端工作流由元素事件、变量变化或页面加载启动,并按顺序运行步骤。
- 用
!vars.isOpen这样的表达式配合 Set variable 可以切换一个值,filter表达式可以缩小列表范围。
阅读本教程背后的指南: