Avue使用小技巧奥
在使用avue框架时有很多时候框架的curd表单不符合需求需要特别的开发,比如说在新增页面需要一些特别的组件或者新增页面中两个输入框或者选择框需要进行条件判断。某一个输入框选择或者输入值以后另一个输入框才能进行值的数据。。。
这个时候就要使用到插槽。
在文档中表单自定义部分
<template>
<avue-crud :data="data"
:option="option"
v-model="user">
<template #name-form="{type,disabled}">
<el-tag v-if="type=='add'">新增</el-tag>
<el-tag v-else-if="type=='edit'">修改</el-tag>
<el-tag v-else-if="type=='view'">查看</el-tag>
<el-tag>{{user.name?user.name:'暂时没有内容'}}</el-tag>
<el-input :disabled="disabled"
v-model="user.name"></el-input>
</template>
</avue-crud>
</template>
<script>
export default {
data () {
return {
user: {},
data: [
{
name: '张三',
sex: '男'
}, {
name: '李四',
sex: '女'
}
],
option: {
column: [
{
label: '姓名',
prop: 'name',
rules: [{
required: true,
message: "请输入姓名",
trigger: "blur"
}]
},
{
label: '性别',
prop: 'sex'
}
]
},
};
},
}
</script>
在卡槽中指定列的prop加上-form作为卡槽的名称开启自定义
根据文档显示我们应该使用字段的prop名称加上-form作为插槽的名字但是经过我实践,这样子是没法实现效果的。那天我尝试了很久都没有成功。最后终于还是在网上找到了正确的方法。
<template slot-scope="{ row }" slot="executionTimeForm">
<el-select v-show="!timePickerShow" :automatic-dropdown="true" :disabled="type==='view'" @focus="timeOnFocus" v-model="timeSelect" multiple placeholder="请选择">
</el-select>
<el-date-picker
ref="datePicker"
v-show="timePickerShow"
:readonly="type==='view'"
@change="timeClick"
type="datetime"
valueFormat="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd HH:mm"
v-model="times"
clearable
placeholder="选择日期时间">
</el-date-picker>
</template>
实际上要使用这种写法slot ="prop+Form"才能实现想要的功能。不知道是不是版本问题还是什么。