设置器扩展
如何新增一个设置器?
分析
举个🌰,需要新增一个文本设置器。
服务端
题型Schema根据《问卷业务协议规范》定义,新增题型属性即新增数据,若无属性扩展功能设置和回收数据个性化分析诉求,Server端无需开发。
前端
增加文本设置器
在web/src/materials/setters/widgets
目录下新增Input.vue
:
- 接收formConfig作为props
- value绑定formConfig.value的值
- change事件触发schema更新
<template>
<el-input
:placeholder="formConfig.placeholder"
v-model="inputData"
@blur="changeData"
></el-input>
</template>
<script>
import { FORM_CHANGE_EVENT_KEY } from '@/materials/setters/constant';
export default {
name: 'Input',
props: {
formConfig: { // 接收formConfig作为props
type: Object,
required: true,
},
},
data() {
return {
inputData: this.formConfig.value || '',
};
},
watch: {
'formConfig.value': { // value绑定formConfig.value的值
handler(newVal) {
// ...
},
},
},
methods: {
changeData: function () { // change事件触发schema更新
// ...
},
},
};
</script>
使用文本设置器
为单行输入框增加内容限制格式:
在 web/src/materials/questions/widgets/InputModule/meta.js
新增配置:
// 把属性值配置到题型描述文件中:
{
title: '单行输入框',
type: 'text',
componentName: 'InputModule',
formConfig: [
{
name: 'placeholder',
label: '引导提示文案',
labelStyle: {
'font-weight': 'bold',
},
type: 'Input',
placeholder: '限制20字',
key: 'placeholder',
tip: '限制20字',
}
// ...
],
}
具体可参考:题型描述协议