数据源
概念
数据源的意义就是数据的来源,是属性表达式里能够使用的数据,json2render
<template>
<j-render
v-model="model"
:fields="fields"
:datasource="datasource"
></j-render>
</template>
<script>
import { defineComponent } from 'vue'
import JRender from 'json2render/vue-full'
export default defineComponent({
components: { JRender },
setup() {
return {
datasource: {
listdata: { type: 'fetch', url: '/data.json', auto: true },
},
model: {
text: '',
},
fields: [
{
component: 'p',
// 属性值是从 model 的 text 里获取,值发生变化显示也发生变化
text: {
$type: 'computed',
$result: 'model.text',
},
},
{
component: 'input',
props: {
placeholder: '请输入',
// 属性值是从 model 的 text 里获取,值发生变化显示也发生变化
value: '$:model.text',
// 事件里将第一个参数里的属性值更新到 model 的 text 属性里
onInput: '@model.text:arguments[0].target.value',
},
},
{
component: 'p',
// 属性值是数据源 listdata 的 data 属性转换成字符串
text: '$:JSON.stringify(listdata.data)',
props: { style: 'color: red' },
},
],
}
},
})
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
数据源定义
json2render
支持 model
arguments
scope
三种数据来源
model
是组件 modelValue
属性传递过来的值
arguments
如果属性是一个事件,则 arguments
代表事件传过来的参数集合
scope
如果组件是由数组数据渲染出来的或者父级组件有值传递过来,scope
就作为当前数据项的引用
TIP
类似 vue scope-slot
的作用
自定义数据源
除了固定数据来源以外,可使用的数据也包括通过插件定义的或自定义的数据来源,具体参考高级用法