Appearance
数据视图
描述
视图主要是用来控制页面中绘制的组件,以及组件的各个属性、方法、事件等,通过编辑视图,可以修改页面的呈现与交互。
由于使用页面设计器可以直接设计页面,配置组件,操作视图更简单,也更为方便直观。
因此不建议在此页面管理视图,最好只做查询功能。
如果想要直接修改视图的源代码,那么可以按照下面的说明来操作。
或者想了解页面配置的运行机制以及源码结构,也可以阅读该章内容进行参考。
操作

1. 查看
可以查看视图的详细信息。
2. 编辑
可以编辑基础信息。
也可以对视图内容进行友好的可视化代码编辑。

3. 复制
可以对该视图进行复制,以达到快速新建并复用的目的。
4. 删除
删除该视图,并有删除前的信息确认。
5. 寄连
可以查看绑定的寄连,数据视图在绑定了执行寄连之后,页面加载的时候,如果该寄连是在 before 阶段执行的,那么在寄连执行的时候可以直接获取到当前视图内容对象。
5. 页面
可以查看所有使用该视图的页面,方便修改视图的的时候知道会受到影响的页面。
查询

可以通过视图编码、用途描述、数据内容以及ID进行查询,支持模糊查询。
点击空格即可唤出查询窗口,输入条件后按回车键执行查询。
可以多个条件同时输入,支持清空条件。
规范
1. 设计原则
我们将页面中的各个区域进行划分,以行为单位,也就是一个页面由多个行组成,所有的页面元素全部都归属于一个对应的行里面。
每个行可以分成多列,每个列中可以继续包含多行和多列,我们将页面中的元素全部都放到对应的列里面,每个元素都对应着我们预置的某个组件,这样就形成了整个页面。
2. 设计理念
通过json的形式对这些行、列、元素进行描述,可以指定属性、事件、方法、权限等等。页面加载时通过一个或多个这样的json就能够知道该页面的结构,从而进行页面的渲染,以及其他行为的处理。
我们将由此设计出来的json称之为数据视图,因为它通过数据的描述,能够决定页面视图的呈现。
行列
存在最外层的数组中对象的个数,即表示该数据视图包含的行数,如:[{}] 表示一行,[{},{}] 表示两行.
每一行可以包含列,列用col表示,对应数组中包含的对象个数,即表示列数,如:
js
[{
col: [{
}]
}]上面代码表示有一行一列。
每一行是一个对象,对象中可以包含任意属性,通过col来标识包含的列。
每一列也是一个对象,列或者任意组件都具有插槽,通过以 # 开头,来表示这是一个插槽,比如:#default、#header 等等。
其中default插槽可以省略#标识,相当于关键字。
js
[{
col: [{
_span: 12, //所占列数
default: [] //表示行内的元素,也可理解为 default 插槽
},{
_span: 12,
default: [{
col: [{}]
}]
}]
}]表示有一行两列,第二列中又包含了一行一列。关于 default 的更多信息 详见
可以给行列添加任意的属性、事件等,其中key的第一个字符为 _ 的属性,将会自动绑定到该元素上面。
key中带有前缀on_的属性将被作为事件来进行处理。
js
[{
_class: 'c-red b', //所使用的样式
'_data-role': 'first-row', //绑定的 dataRole 属性值
col: [{
_class: 'p-c',
_span: 12,
//绑定 click 事件
on_click: function() {
console.log('点击了该列')
},
default: []
}]
}]其中以下划线开头的属性都会被绑定为组件的属性,以on加下划线开头的属性自动绑定为组件的事件
示例 如下放入一个文字组件在列中,并居中显示。is 属性表示该组件是什么组件。
js
[{
//行样式,其中有字体和字体大小等样式,详细解释后面再说。
_class: 'mt-50 ff-zhongsong fw-700 c-red fs-33 mb-10',
col: [{
_span:24,
_class: 'ta-c', //居中样式
default: [{
is: 'lc-text', //渲染一个 text 文本
default: '生知安行、学知利行、困知勉行'
}]
}]
}]
is属性代表需要渲染的组件,以lc-开头,加上元素名, 比如要渲染一个element-plus的按钮组件可以这样写:is:'lc-button'
注意: 这部分内容仅做理解页面结构使用,不推荐采用编辑JSON配置去开发页面,正常开发页面仅在页面设计器中拖拽组合即可完成页面搭建。
如想要知道某个页面用到的所有数据视图,可点击数据视图管理页面右上角的
输入页面的id进行查找。
项目代码中预置好了各种可能用到的组件,我们只需要指定组件名称即可将该组件渲染到页面中。
组件
我们的所有组件全部都是放在列中的,某些特殊组件可能还包含一些其他组件。
所有组件的默认内容都是用default字段来指定,如需绑定数据则用_data来绑定。
下面我们来看一个简单的例子:
首先,我们新建一行一列,并填入一些文字。
js
[{
col: [{
default: [{
is: 'lc-text',
default: '可视化设计页面真的是太酷啦'
}]
}]
}]其中is字段是用来指定要渲染的组件,所有需要引用的组件,需要在组件名前面加上lc-前缀,如text组件的引用就是lc-text。
我们来看下页面中的渲染效果。
然后我们添加一些样式,来改变页面呈现。
js
[{
_class: 'mt-50 ff-zhongsong fw-700 c-red fs-33 mb-10',
col: [{
_class: 'ta-c',
default: [{
is: 'lc-text',
default: '可视化设计页面真的是太酷啦'
}]
}]
}]再看下效果。

让我们再追加一列,并在第二列中添加两个元素,一个下拉框和一段文字。
js
[{
_class: 'mt-50 ff-zhongsong fw-700 c-red fs-33 mb-10',
col: [{
_span: 15,
_class: 'ta-c',
default: [{
is: 'lc-text',
default: '可视化设计页面真的是太酷啦'
}]
}, {
_span: 9,
default: [{
is: 'lc-select',
_class: 'w-240 mr-10',
model: 'learnBegin'
}, {
is: 'lc-text',
default: '开始学习'
}]
}]
}]看看现在的效果。

可以看到通过我们构造的json,页面已经能够成功解析并渲染出来,其中model字段表示如果要提交到后端的话,这个下拉框对应的key。
现在的下拉框暂时是还没有数据的,因为我们没有配置它。通过指定default我们可以对下拉框构造数据。
让我们重新设定一个json,并对下拉框添加数据。
js
[{
_class: 'mt-50 ff-zhongsong fw-700 c-red fs-33 mb-10',
col: [{
_span: 15,
_class: 'ta-c',
default: [{
is: 'lc-text',
default: '可视化设计页面真的是太酷啦'
}]
}, {
_span: 9,
default: [{
is: 'lc-select',
_class: 'w-240 mr-10',
model: 'learnBegin',
default: [{
is: 'lc-list',
_data: [{
label: '今天',
value: 'today'
},{
label: '明天',
value: 'tomorrow'
},{
label: '以后',
value: 'later'
}],
default: [{
is: 'lc-option',
_label: '#label',
_value: '#value'
}]
}]
}, {
is: 'lc-text',
default: '开始学习'
}]
}]
}]这是给下拉框添加了一个 list 组件,用来渲染选项列表,然后再给它赋值一个列表数据,并把它的默认插槽添加上 option 组件。关于 _data 更多的配置和使用信息 详见
看下页面效果

让我们再简单的添加一个事件,在选项发生改变的时候执行操作。
js
[{
_class: 'mt-50 ff-zhongsong fw-700 c-red fs-33 mb-10',
col: [{
_span: 15,
_class: 'ta-c',
default: [{
is: 'lc-text',
default: '可视化设计页面真的是太酷啦'
}]
}, {
_span: 9,
default: [{
is: 'lc-select',
_class: 'w-240 mr-10',
model: 'learnBegin',
default: [{
is: 'lc-list',
_data: [{
label: '今天',
value: 'today'
},{
label: '明天',
value: 'tomorrow'
},{
label: '以后',
value: 'later'
}],
default: [{
is: 'lc-option',
_label: '#label',
_value: '#value'
}]
}],
on_change: function(e) {
console.log(e)
console.log('选项值发生改变')
},
}, {
is: 'lc-text',
default: '开始学习'
}]
}]
}]看下效果

说明
所有在数据视图中指定的组件默认都是由 element-plus 中的组件来渲染的,如果需要使用 naive-ui 组件渲染,可以通过category属性来指定。
所有组件可以绑定的属性和事件都由渲染组件来决定,只要渲染组件支持,那么就可以任意绑定,除此之外,只要是vue支持的属性、方法或事件也可以指定方式进行设定。
我们还可以额外指定一些不带下划线的附加属性,之后我们可以通过对视图的引用来对这些属性进行访问。
关于更多的属性配置可以浏览 参考