布局容器
简介
布局容器其主要就是完成页面的基本布局,这些布局容器最后描述出的页面内容基本上就是静态的页面内容
特点
- 不会涉及动态数据的交互,或者更直白可以描述为用已知的数据去描述当前页面布局
- 布局容器内部主要是对静态数据内容的描述
与数据容器的区别
-
数据容器内部会与数据交互,会去向服务端获取相关的数据资源(比如 table 数据)和页面描述资源(模型资源描述),这中间就涉及前后端数据交互的场景,比如删除,新增数据;布局容器只是通过已有的数据和已知的内容做前端渲染工作
-
数据容器是模型数据展示的窗口,每个数据容器对应一个模型(自定义数据容器除外),而布局容器不会对应一个模型
基本布局容器组件
View
简介
简称根布局,是每个页面最大的父级标签,其是描述页面内容的起点,其内可以根据实际布局放置多个数据容器或者布局容器
简单例子
<View title="人员列表" subtitle="view 副标题"> <Table key="person" model="trantor_doc_Person"> <Fields> <Field name="name"/> <Field name="avatar"/> </Fields> </Table> <Tabs> <Tab title="部门详情"> </Tab> <Tab title="部门人员列表"> </Tab> </Tabs></View>
Anchors
简介
锚点布局,Tab 的切换是 锚点定位 的形式。
锚点就是指在本网页内设置的一个位置,点击链接可以跳转到指定位置
对应 HTML 代码:
<a href="# 锚 ">点这跳到id=锚的点</a><!-- 不一定局限在本页,href里还可能写调页的地址 -->
简单例子
<View title="Anchors 布局"> <Anchors> <!-- Anchors布局容器 --> <Anchor title="部门详情"> <!-- Anchors下对应的锚点1 --> <Detail key="department" model="trantor_doc_Department"> <!-- 锚点1 对应的内容 --> <Fields> <Field name="name"/> </Fields> </Detail> </Anchor> <Anchor title="部门人员列表"> <!-- Anchors下对应的锚点2 --> <Table model="trantor_doc_Person" lookupFrom="department.staff"> <!-- 锚点2 对应的内容 --> <Fields> <Field name="name"/> </Fields> </Table> </Anchor> </Anchors></View>
Tabs
简介
选项卡布局,默认加载第一个选项卡中的内容,选中选项卡会重新渲染当前选项卡下的内容
简单例子
<View title="Tabs 布局"> <!-- Tabs的选项卡布局容器 --> <Tabs> <Tab title="部门详情"> <!-- Tabs的选项卡1 --> <Detail key="department" model="trantor_doc_Department"> <!-- 对应Tabs的选项卡1的内容 --> <Fields> <Field name="name"/> </Fields> </Detail> </Tab> <Tab title="部门人员列表"> <!-- Tabs的选项卡2 --> <Table model="trantor_doc_Person" lookupFrom="department.staff"> <!-- 对应Tabs的选项卡2的内容 --> <Fields> <Field name="name"/> </Fields> </Table> </Tab> </Tabs></View>
LinkTabs
简介
链接选项卡布局,其实就是通过链接跳转或者说是改变页面 url 来实现页面布局的切换
简单例子
<View title="人员列表"> <!-- LinkTabs的选项卡布局容器 --> <LinkTabs> <!-- 单个LinkTab的选项卡布 title 标题属性 show 是否显示 env 传入当前选项卡字段 通常可作为查询条件来使用 --> <LinkTab title='人员列表' action='linktabs' :context="{record: {id: 1},test: '小伦叽'}"/> <LinkTab title='ahh' action='linktabs' :show="console.log(getContainerByKey('person') && getContainerByKey('person').data && getContainerByKey('person').data[0].age !== 1, 'xxx')"/> <LinkTab title='部门' action='linktabs' :env="{test: '小岳岳'}"/> <LinkTab title='部门' action='tab1' :env="{test: '小岳岳'}"/> </LinkTabs> <Table model="trantor_doc_Person"> <!-- 通过LinkTab的选项卡来显示不同页面内容,对应不同数据内容 --> <Fields> <Field name="name" :initValue="env.test"/> <Field name="avatar"/> <Field name="age"/> <Field name="password"/> <Field name="credentials"/> <Field label="部门名称" name="department.name"/> <Field name="birthday"/> </Fields> </Table></View>
Steps
简介
步骤条布局,一般可用于显示相关业务进度, 比如外卖下单 -> 商家接单 -> 骑手接单 -> 骑手配送 -> 完成
简单例子
<View title="人员列表"> <Steps current="1"> <Step title="外卖下单" description="这是外卖下单" key="1" /> <Step title="商家接单" description="这是商家接单" key="2" /> <Step title="骑手接单" description="这是骑手接单" key="3" /> <Step title="骑手配送" description="这是骑手配送" key="4" /> <Step title="完成" description="这是完成" key="5" /> </Steps></View>
Grid
简介
栅格布局
布局的栅格化系统,我们是基于行(row)和列(col)来定义信息区块的外部框架,以保证页面的每个区域能够稳健地排布起来。下面简单介绍一下它的工作原理:
-
通过 row 在水平方向建立一组 column(简写 col)
-
你的内容应当放置于 col 内,并且,只有 col 可以作为 row 的直接元素
-
栅格系统中的列是指 1 到 24 的值来表示其跨越的范围。例如,三个等宽的列可以使用.col-8 来创建
-
如果一个 row 中的 col 总和超过 24,那么多余的 col 会作为一个整体另起一行排列
简单例子
<View title="Grid布局"> <Row> <Detail key="department" model="trantor_doc_Department"> <Fields> <Field name="id" /> <Field name="createdAt" /> <Field name="name" /> </Fields> </Detail> </Row> <Row> <Col :span="8"> <Table title="部门人员" key="main" model="trantor_doc_Person" related="department:department" singleSelection> <Fields> <Field name="name" /> <Field name="age" /> </Fields> <Actions> <Action multi @action="console.log" label="Action"/> </Actions> </Table> </Col> <Col :span="16"> <!-- related:所有 trantor_doc_Person 模型的 department 属性对应 key=department --> <Table title="部门人员" model="trantor_doc_Person" related="department:department"> <Fields> <Field name="name" /> <Field name="age" /> </Fields> <RecordActions label="操作"> <Action @action="console.log" label="详情" openViewType="Dialog"/> </RecordActions> </Table> </Col> </Row></View>