refactor(label): Optimization code

This commit is contained in:
daniel-dx
2019-03-03 12:15:45 +08:00
parent 48d71de351
commit 023473e308
3 changed files with 8 additions and 29 deletions
@@ -60,7 +60,7 @@
properties: {
label: {
type: 'string',
default: 'some text',
default: 'ncform',
ui: {
widget: 'label'
}
@@ -78,7 +78,7 @@
properties: {
label: {
type: 'string',
value: 'some text',
value: 'ncform, a nice form development way that generates form UIs and their interactions with just configuration.',
ui: {
widget: 'label'
}
@@ -9,6 +9,7 @@
}
#demo .demo_item-wrapper > div:first-child {
flex: 1;
width: 33%;
}
#demo .demo_item-wrapper > div:first-child small {
margin-top: 8px; display: block;
@@ -31,4 +32,4 @@
}
.doc .el-submenu .el-menu-item {
height: 40px;
}
}
@@ -1,16 +1,8 @@
<template>
<el-tooltip
class="ncform-label-wrap"
:content="modelVal"
placement="top"
:disabled="mergeConfig.multiLine"
>
<label
ref="label"
:class="['ncform-label', mergeConfig.multiLine ? 'multi-line' : '']"
:style="{ width: dynamicWidth }"
>{{val}}</label>
</el-tooltip>
<label :title="mergeConfig.multiLine ? '' : val"
ref="label"
:class="['ncform-label', mergeConfig.multiLine ? 'multi-line' : '']"
>{{val}}</label>
</template>
<style lang="scss">
@@ -48,27 +40,13 @@
multiLine: false // 是否多行显示 (当为false时,内容溢出时用...显示,然后鼠标移上去可显示完整的内容)
},
val: '',
dynamicWidth: '100%'
// mergeConfig: 请使用该值去绑定你的组件的属性,它包含了defaultConfig data和config props的值
// modelVal:请使用该值来绑定实际的组件的model
}
},
methods: {
setDynamicWidth() {
const vm = this;
// 不只使用css3的原因在于 内嵌ncform布局组件,此组件的父组件下有子组件具有浮动属性导致宽度继承失效,父组件宽度为0,只能靠子组件自行撑开宽度
if (!vm.mergeConfig.multiLine && vm.modelVal !== '') {
vm.$nextTick(() => {
vm.dynamicWidth = `${this.$parent.$el.offsetWidth}px`;
})
}
}
},
mounted() {
const vm = this;
vm.setDynamicWidth();
vm.val = vm.modelVal;
},
}