速成班101
10 模块
5 周数

桌子

点击复制

在网络应用中使用表格并为其获取数据


第一条记录出现在数据库中!但我们没有看到它。但我们没有看到它,它需要被修复。要做到这一点,你需要 Table组件(一个将显示必要数据的表)。添加后,它将立即要求你决定哪些数据将在其中,并选择一个模型和端点。

表的设置

创建的表应立即按照你的要求发布。例如,限制一页的记录数(表可以很长,也可以是多页的),以及删除不感兴趣的字段,或者设置所需的字段,以便从相关的表中输出。

同时,我们要记住,仅仅增加任何组件还不意味着它完全可以投入工作。你需要创建适当的业务流程。对于表来说,很多都是自动创建的,但作为培训的一部分,我们将从头开始创建一切,以便更好地吸收材料。

表的触发器

在表格中,有三个最感兴趣的触发器-- onDataUpdate, onShow、、和 onFilter.让我们从 onShow并定义当表格在屏幕上显示时应该发生什么。这将需要三个块。

1) Table Update Properties.设置表格的理想属性。例如,在这里你可以限制一个页面上的记录数量(设置参数为 Records per page = 10),还可以显示该页处于数据加载模式(Loading = true)

2) Server request GET /country/.为了让数据出现,它们需要被带到某个地方。而要做到这一点,要向数据库提出相应的端点请求。同时,注意这个端点的输入参数的数量。它们在查询中提供了更多的灵活性,只获得真正需要的数据。
在我们的案例中,我们将设置 _limit = 10因为每页的条目数是10,没有必要加载更多。此外,我们将做出正确的输出顺序,按名称对所有内容进行排序(_sort_by = name),并且还要设置排序顺序。该 _sort_order参数可以取值为 ASC(从字Ascending ,对于直接排序,从最小的值到最大的值) 或 DESC(Descending ,反向排序)。直接按字母顺序排序对我们来说很好,所以 _sort_order = ASC.

_with参数值得特别注意。在没有这个参数的情况下执行查询,我们只能得到关于国家的数据。但是国家模型与城市有关,虽然这些数据不属于请求的表,但我们仍然想看到它们。要做到这一点,请设置 _with = citys并立即获得关于这个国家有哪些城市的数据。

3) Table Update Data.数据已经收到,但需要将其转移到一个表格中,以便在屏幕上显示。为了做到这一点,我们将所有的信息(data),以及记录的总数(count - Total Records),以便了解表格中应该有多少页。

下一个触发器是 onDataUpdate.表中的数据可以由于各种业务流程而被更新。而当这种情况发生时,最好是一次性指定应该发生什么,而不是在每个业务流程中放入相同的块。在我们的例子中,正确的做法是再次使用 Table Update Properties块,但这次是为了删除先前设置的加载模式 (Loading = false),这是之前设置的,并显示表已经准备好工作。

我们需要的最后一个触发器是 onFilter.它定义了在过渡到表格其他页面的时刻应该发生什么。为了做到这一点,它有一个 _offset参数,该参数与页码一致,表明加载数据时需要什么偏移。

例如,如果在我们的案例中,每页有10个条目,那么第三页将需要从21到30的条目。这些数据将从 _offset获得,并可以传递给 Server request GET /country/块。否则,业务流程将与触发器上的流程完全吻合。 TableOnShow触发器上的过程。在这种情况下,让两个不同的触发器来启动同一个业务流程是合理的。

但是在我们的案例中,重要的区别在于 _offset参数。如果你把所有的东西都留在下面的截图中,那么流程将根据 onShow触发器启动,但它会停在 Server request GET /country/块,因为它不能得到 _offset值(它是由另一个触发器传递的)。

这种情况最好用变量来解决。让我们看一个具体的例子。我们需要一个Integer 类型的变量来保存 _offset值。因此,我们用一个 Integer块来声明这个变量,但用两个不同的 Set Variable块来写它的值,每个块都与一个不同的触发器相关。

根据 Table onShow触发器,我们不需要任何偏移,表格中的数据从一开始就显示出来,并且 _offset = 0,所以我们在 Value = 0Set Variable块中。

Table onFilter触发器启动时,我们已经收到了 _offset值,并希望使用它,所以我们将把触发器的 _offset触发器的值作为 ValueSet Variable块。

在接下来的步骤中,触发器的业务流程彼此没有区别,所以两个业务流程被合并为一个,每个流程都有自己的整数变量值作为 _offset参数。

Was this article helpful?
还在寻找答案吗?
加入社区