# 文本模式
# 介绍
该模式通过 span
标签实现,
# 使用
通过传递 textModel
开启文本模式,如果需要单独设置文本模式,将其加入 items
中需要设置的字段即可.
如果需要对显示的数据进行格式话,在 items
中传递 format
方法进行格式化.
点击查看代码
<!-- @format -->
<template>
<div>
<el-button type="success" plain @click="checkType" style="margin-bottom: 20px"> 切换模式 </el-button>
<z-grid-form v-model="form" :rules="rules" :items="formList" label-width="140px" ref="zTextModelForm" :textModel="textModel"> </z-grid-form>
</div>
</template>
<script>
export default {
name: 'zTextModelFormDemo',
data() {
return {
form: { check_in: '9:30' },
textModel: false,
rules: {
name: [
{ required: true, message: '请输入姓名', trigger: 'blur' },
{ min: 2, max: 5, message: '长度在 2 到 5 个字符', trigger: 'blur' }
]
},
formList: [
{
prop: 'age',
label: '年龄',
render: ({ vmodel }) => {
console.log(vmodel, this.form);
return <el-input v-model={vmodel.age} placeholder="请输入年龄" />;
},
format: ({ value }) => {
return (
<div style={{ fontWeight: 600 }}>
年龄是 <span class={'text-red'}>{value}</span> ,而且我使用了jsx
</div>
);
},
class: 'border'
},
{
prop: 'check_in',
render: 'el-time-select',
label: '使用el-time-select',
class: 'border',
span: 12,
format: ({ value }) => {
return `现在的时间是${value}`;
},
option: {
'picker-options': {
start: '08:30',
step: '00:15',
end: '10:30'
},
class: 'text-red',
style: { width: '100%' },
placeholder: '选择打卡时间1'
}
}
]
};
},
methods: {
checkType() {
this.textModel = !this.textModel;
}
}
};
</script>
<style scoped>
.example {
margin-bottom: 10px;
float: right;
}
</style>
注意
在文字模式下,如果form中不存在对应的值则什么都不会显示.
name | description | type |
---|---|---|
textModel | 控制文本模式的开关,可以进行局部控制 (items中传递) 和全局控制 (作为属性传递给form表单) | Boolean |
format | 当数据格式特殊时,在items 中传递此方法.此方法在通常情况下接受两个参数,在动态表单的情况下接受四个参数. | ( value,index,row?,rowIndex ) => ( vnode | string ) |