吹水,可忽略

当我尝试吧el-form中labelWidth设为auto时,刷新页面获取到了上面的错误
百思不得其解,我貌似没有在beforeDestroy进行操作,为何会报这个错误
果断各种百度,Google,无解之下,到github中查看element,是否有前辈提出过这
个问题,还真有哈
大致错误是当组件中存在v-show时,并且el-form中labelWidth设为auto时,就会获取不到label的宽度。(大佬勿喷我哈,表述欠缺)
正常单页面操作可能不会出现这个问题,由于我是运用在tabs页中页面刷新时出现了这个问题(即通过tabs页达到多页面应用)

正文在这

找到了问题所在就可以对症下药了
可以吧v-show的地方改为v-if,或是吧labelWidth设为固定
但是上面2种操作,并不适用于我当前项目环境中

我的解决方法是,投机取巧

即根据字体个数设为动态labelWidth大小
定义数据源
data(){
return {
labelWidth:""
}
}
mounted跟update中计算label宽度
如每个字体设为18px
methods:{
setLabelWidth() {
let len = 0;
for (const i of this.datas) {
if (i.label) {
i.label.length > len && (len = i.label.length);
}
}
this.labelWidth = len * 18 + "px";
}
},
mounted() {
this.setLabelWidth();
},
updated() {
this.setLabelWidth();
}
this.datas为我封装中对应form数据格式为
 datas: [
{
label: "张三",
XX:XXX
},
{
label: "李四",
XX:XXX
},
{
label: "王二麻子",
XX:XXX
}
]
以上代码都是无关紧要的,主要是解决问题的思路(投机取巧哈)
最后放上我简陋的封装
<template>
<div>
<el-form
:model="formData"
:rules="rules"
:size="formSize"
:ref="refName"
:disabled="disabled"
:label-width="labelWidth"
>
<el-row>
<el-col v-for="(item, i) in datas" :key="i" :span="item.span || span" :class="item.class">
<el-form-item
:label="item.label"
:prop="item.prop"
v-show="item.show!=undefined?item.show:true"
>
<!-- 按钮 -->
<el-button
v-if="item.type == 'btn'"
:type="item.whatType"
:style="{
padding: '10px 32px',
'margin-left': item.width || 'auto'
}"
v-show="item.show!=undefined?item.show:true"
@click="btnCK(item.ck)"
>{{ item.title }}</el-button>
<!-- 单选按钮 -->
<el-radio-group v-else-if="item.type == 'radio'" v-model="formData[item.prop]">
<el-radio v-for="(v, k) in item.radios" :key="k" :label="v.value">{{ v.label }}</el-radio>
</el-radio-group>
<!-- 多选按钮 -->
<el-checkbox
v-else-if="item.type == 'checkbox'"
v-model="formData[item.prop]"
>{{item.title}}</el-checkbox>
<!-- 空白 -->
<el-input v-else-if="item.type == 'empty'" style="visibility:hidden;"></el-input>
<!-- 下拉框 -->
<el-select
v-else-if="item.type == 'select'"
v-model="formData[item.prop]"
clearable
filterable
:remote="item.longRange"
:remote-method="(query)=>{remoteMethod(query,item.longRangeCk)}"
:loading="item.loading"
:ref="item.prop"
style="width: 100%;"
:placeholder="placeholder||(item.placeholder|| '请选择' + item.label)"
@change="changeSel($event, item.ck,selectList(item.selectName,item.selectData,item.prop),item.mult)"
:disabled="item.disabled"
:multiple="item.multiple"
@clear="clear(item.clear)"
@keyup.enter.native="$emit('enterTrigger')"
>
<el-option
v-for="(v, index) in selectList(
item.selectName,
item.selectData,
item.prop
)"
:key="index"
:label="v.dataValue"
:value="v.dataKey"
:disabled="v.disabled"
></el-option>
</el-select>
<!-- 日期选择器 -->
<el-date-picker
v-else-if="item.type == 'date'"
v-model="formData[item.prop]"
:type="item.whatType"
style="width: 100%;"
:placeholder="placeholder||(item.placeholder|| '请选择' + item.label)"
start-placeholder="开始日期"
end-placeholder="结束日期"
:disabled="item.disabled"
:value-format="item.format || 'yyyy-MM-dd'"
@change="datePicker"
></el-date-picker>
<!-- 上传 -->
<el-upload
v-else-if="item.type == 'upload'"
:action="item.action || action"
:http-request="myload"
:show-file-list="false"
v-show="item.show!=undefined?item.show:true"
>
<el-button
:style="{ padding: '10px 32px','margin-left': item.width || 'auto'}"
:type="item.whatType"
>{{ item.title }}</el-button>
</el-upload>
<!-- 难搞的数据放这 -->
<template v-else-if="item.type == 'slot'">
<slot :name="item.name"></slot>
</template>
<!-- 过滤纯文本 -->
<el-popover v-else-if="item.type == 'flt'" placement="top" trigger="click">
<div>{{formData[item.prop] | all(item.fltName,item.fltval)}}</div>
<el-input
slot="reference"
class="inputSpan"
:readonly="true"
unselectable="on"
:value="formData[item.prop] | all(item.fltName,item.fltval)"
></el-input>
</el-popover> <!-- 文本 -->
<el-popover v-else-if="item.type == 'span'" placement="top" trigger="click">
<div>{{ formData[item.prop] }}</div>
<el-input
slot="reference"
class="inputSpan"
:readonly="true"
unselectable="on"
:value="formData[item.prop] "
></el-input>
</el-popover> <!-- autocomplete -->
<el-autocomplete
v-else-if="item.type == 'autocomplete'"
clearable
:ref="item.prop"
v-model="formData[item.prop]"
:value-key="item.valueKey||'dataValue'"
:fetch-suggestions="(str,cb)=>{completeSearch(str,cb,item.selectData,item.name)}"
style="width: 100%;"
:placeholder="placeholder||(item.placeholder|| '请输入' + item.label)"
:disabled="item.disabled"
@select="completeSelect($event,item.ck)"
@clear="clear(item.clear)"
@keyup.enter.native="$emit('enterTrigger')"
></el-autocomplete>
<!-- 输入框 -->
<el-input
v-else
clearable
v-model="formData[item.prop]"
:type="item.whatType"
:placeholder="placeholder||(item.placeholder|| '请输入' + item.label)"
:readonly="item.readonly"
:disabled="item.disabled"
:ref="item.prop"
:maxlength="item.max"
@input="inputval($event,item.t,item.prop)"
@clear="clear(item.clear)"
@blur="inputblur($event,item.blur)"
rows="3"
@keyup.enter.native="$emit('enterTrigger')"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</template>

Error in beforeDestroy hook: “Error: [ElementForm]unpected width “found in的更多相关文章

  1. hightchart 报错 Error in mounted hook: "Error: Highcharts error #17: www.highcharts.com/errors/17"

    这个错误是应该导入hightchart 使用的相关的 东西 ,这里是worldcloud import  Wordcloud    from  'highcharts/modules/wordclou ...

  2. // mounted: {}, 原来是 空方法 导致了 vue 的警告 !| [Vue warn]: Error in mounted hook: "TypeError: handlers[i].call is not a function"

    // mounted: {}, 原来是 空方法 导致了 vue 的警告 !| vue.runtime.esm.js?2b0e:587 [Vue warn]: Error in mounted hook ...

  3. Error in mounted hook: "TypeError: handlers[i].call is not a function" 原因

    Error in mounted hook: "TypeError: handlers[i].call is not a function" 百度翻译 安装钩子中的错误:" ...

  4. 解决MyEclipe出现An error has occurred,See error log for more details的错误

    今晚在卸载MyEclipse时出现An error has occurred,See error log for more details的错误,打开相应路径下的文件查看得如下: !SESSION 2 ...

  5. 统计分析中Type I Error与Type II Error的区别

    统计分析中Type I Error与Type II Error的区别 在统计分析中,经常提到Type I Error和Type II Error.他们的基本概念是什么?有什么区别? 下面的表格显示 b ...

  6. ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 7

    问题: 使用hibernate4.1.1,数据库使用mysql5.1.30,使用hibernate自动生成数据库表时,hibernate方言使用org.hibernate.dialect.MySQLI ...

  7. Mysql: ERROR 1030 (HY000): Got error 28 from storage engine

    今天帮同事解决一个问题的时候,遇到了下面的异常: ERROR 1030 (HY000): Got error 28 from storage engine 我们的数据库是mysql,我们的sql语句是 ...

  8. hive脚本出现Error: java.lang.RuntimeException: Error in configuring object和Caused by: java.lang.IndexOutOfBoundsException: Index: 9, Size: 9

    是在reduce阶段报的错误,详细错误信息是 朱传豪 19:04:48 Diagnostic Messages for this Task: Error: java.lang.RuntimeExcep ...

  9. Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptabl

    在使用AFNetworking 2.0  的时候本来一切很顺畅,但是中途遇到几个比较坑的地方 这里分享一下爬坑经历,忘读者不能速爬坑! 在发送请求后,NSURLSessionDataTask一直报错 ...

  10. eclipse报An error has occurred,See error log for more details. java.lang.NullPointerException错误

    eclipse报An error has occurred,See error log for more details. java.lang.NullPointerException错误,解决办法: ...

随机推荐

  1. ESP8266 ESP-01S模块使用及AT命令

    ESP-01S PIN定义 工作时连线方法 ESP-01S USB2TTL/MCU GND GND TX(GPIO1) RX RX(GPIO3) TX 3.3V 3.3V 相关文件下载 固件及烧录软件 ...

  2. bootstrap与javascript

    1.bootstrap依赖 bootstrap依赖javascript类库,jQuery 下载jQuery,在页面上应用jQuery 在页面上应用bootstrap的js类库 <script s ...

  3. ASCII编码的影响与作用:数字化时代的不可或缺之物

    一.ASCII编码的起源 ASCII(American Standard Code for Information Interchange)编码是一种最早用于将字符转换为数字的编码系统.它诞生于20世 ...

  4. 麒麟系统开发笔记(十二):在国产麒麟系统上编译GDAL库、搭建基础开发环境和基础Demo

    前言   麒麟系统上做全球北斗定位终端开发,北斗GPS发过来的是大地坐标,应用需要的是经纬度坐标,所以需要转换,可以使用公式转换,但是之前涉及到了山He智能一个项目使用WG.   大地坐标简介 概述 ...

  5. vscode中跑go test时打印详细信息配置

    1.文件>首选项>设置>搜索Test Flags 2.选择在settings.json中编辑 3.添加以下内容 "go.testFlags":[ "-v ...

  6. matplotlib画图中x轴过于密集的解决办法

    import matplotlib.ticker as ticker ax.xaxis.set_major_locator(ticker.MultipleLocator(base=10)) # tic ...

  7. J-link虚拟串口波特率异常问题

    J-LINK V9以上自带了虚拟串口,使用非常方便. 但最近遇到问题,发现打开虚拟串口时电脑接收到的是乱码.到官网搜索了一下,发现最高波特率是115200,我使用的是256000,于是降低波特率. 官 ...

  8. [Node] nvm 安装 node 和 npm

    Node JS 安装 安装 node version manager (nvm) Windows: https://github.com/coreybutler/nvm-windows/release ...

  9. Vue 之 new vue({})与export default {} 的区别

    刚入门 vue 的,可能会有这样的困惑:什么时候用new vue({}),什么时候用export default {} 呢? 比如,我们在用 cli 创建项目时 在 main.js 入口里面用的时ne ...

  10. RocketMQ—RocketMQ集成SpringBoot

    RocketMQ-RocketMQ集成SpringBoot 新建生产者的boot项目和消费者的boot项目,pom文件重点如下: <dependencies> <dependency ...