elementUI 的 input无法输入bug解决

1、出现bug的原因
        是因为数据层虽然改变了,但是并没有引起视图层的变化

2、解决方案

@input=”forceUpdate($event)” //在input框上加输入事件

forceUpdate(e) {
this.$forceUpdate() 强制刷新
}

jeecg-boot框架前端写了个筛选组件:SearchBox.vue,测试人员发现输入框无法输入数据,经查是这个问题。

<template>   <div>     <el-form :inline=”true” ref=”searchForm” :model=”formData” :label-width=”labelWidth”>       <el-row style=”display: flex;flex-wrap: wrap;”>         <template v-for=”(item, index) in searchOptions”>           <el-col :xs=”12″ :sm=”8″ :md=”8″ :lg=”6″ :xl=”4″>             <el-form-item :label=”item.label” :prop=”item.prop”>               <!– 输入框 –>               <template v-if=”item.isInput && item.isInput == 1″>                 <el-input style=”width:100%;” :allowClear=”true” placeholder=”请输入”
@input=”forceUpdate($event)” v-model=”formData[item.prop]” />               </template>               <!– 选择框 –>               <template v-if=”item.isSelect && item.isSelect == 1″>                 <el-select style=”width:100%;” :disabled=”item.disabled” filterable :clearable=”item.isClearable != ‘0’ ” v-model=”formData[item.prop]” placeholder=”请选择” @change=”val => { handleChange(val, item) }”>                   <el-option v-for=”(el, i) in item.options” :key=”i” :value=”el.value” :label=”el.name” />                 </el-select>               </template>               <!– 树选择框 –>               <template v-if=”item.isTreeSelect && item.isTreeSelect == 1″>                 <a-tree-select :allowClear=”true” style=”width:100%;” :replaceFields=”item.replaceFields” :disabled=”item.disabled” v-model=”formData[item.prop]” placeholder=”请选择” :dropdown-style=”{ maxHeight: ‘400px’, overflow: ‘auto’ }” :tree-data=”item.options” @change=”val => { handleChange(val, item) }” />               </template>               <!– 时间选择 –>               <template v-if=”item.isDate && item.isDate == 1″>                 <el-date-picker style=”width:100%;” v-model=”formData[item.prop]” :format=”item.format” :value-format=”item.valueFormat” :type=”item.type” placeholder=”请选择” />               </template>             </el-form-item>           </el-col>         </template>         <!– 查询重置按钮 –>         <el-col :xs=”12″ :sm=”8″ :md=”8″ :lg=”6″ :xl=”4″ style=”margin-left: auto;”>           <el-form-item label=”” prop=”” style=”display: flex;justify-content: flex-end;”>             <div class=”btn-group-s”>               <el-button type=”primary” icon=”el-icon-search” @click=”onSearch(true)”>查询</el-button>               <el-button style=”margin-left: 8px” @click=”onSearch(false)”>重置</el-button>               <el-button v-for=”(btn, idx) in extendBtn” :key=”idx” :type=”btn.type || ‘primary'” style=”margin-left: 8px” @click=”btnClick(btn)”>{{ btn.label }}</el-button>             </div>           </el-form-item>         </el-col>       </el-row>     </el-form>   </div> </template> <script> export default {   props: {     searchOptions: { type: Array, default: () => [] },     extendBtn: { type: Array, default: () => [] },     labelWidth: { type: String, default: ‘160px’ },   },   components: {},   data() {     return {       formData: {},     }   },   mounted() {},   computed: {},   methods: {     init() {       this.searchOptions.map((i) => {         if (i.defaultVal) {           this.formData[i.prop] = i.defaultVal         } else {           this.formData[i.prop] = undefined         }       })       this.$emit(‘onSearch’, this.formData)     },     btnClick(btn) {       this.$emit(btn.clickFn)     },     forceUpdate(e) {       this.$forceUpdate()   //强制刷新     },     // 查询or重置     onSearch(flag) {       if (!flag) {         this.formData = {}         this.$refs.searchForm.resetFields()         this.searchOptions.map((i) => {           if (i.defaultVal) {             this.formData[i.prop] = i.defaultVal           } else {             this.formData[i.prop] = undefined           }         })         this.$forceUpdate()       }       this.$emit(‘onSearch’, this.formData)     },     handleChange(value, obj) {       this.formData = { …this.formData, [obj.prop]: value }       this.$emit(‘handleChange’, value, obj)     },   }, } </script> <style lang=”less” scoped> @import ‘~@assets/less/normal.less’;

/deep/.el-form-item {   margin-bottom: 5px;   width: 100%; } /deep/.el-form-item–mini .el-form-item__content {   width: calc(100% – 140px); }

.btn-group-s {   height: 28px;   display: flex;   align-items: center;   display: flex;   justify-content: flex-end; } /deep/.ant-select-selection__rendered {   line-height: 28px; } /deep/.ant-select-selection–single {   height: 28px; } /deep/.ant-select {   font-size: 12px; } </style>

请登录后发表评论

    没有回复内容