diff --git a/packages/field/src/field.vue b/packages/field/src/field.vue index 1a10aafbf..011fdae8a 100644 --- a/packages/field/src/field.vue +++ b/packages/field/src/field.vue @@ -95,6 +95,14 @@ export default { }; }, + mounted() { + if (this.autosize && this.type === 'textarea') { + const el = this.$refs.textareaElement; + el.style.height = el.scrollHeight + 'px'; + el.style.overflowY = 'hidden'; + } + }, + watch: { value(val) { this.currentValue = val; @@ -102,7 +110,7 @@ export default { currentValue(val) { if (this.autosize && this.type === 'textarea') { - this.$nextTick(() => this.sizeAdjust()); + this.$nextTick(this.sizeAdjust); } this.$emit('input', val); } @@ -125,12 +133,9 @@ export default { }, sizeAdjust() { - const textareaElement = this.$refs.textareaElement; - const textAreaDiff = (parseInt(textareaElement.style.paddingBottom, 10) + - parseInt(textareaElement.style.paddingTop, 10)) || 0; - // 需要先设为0, 才可以让scrollHeight正确计算。 - textareaElement.style.height = 0 + 'px'; - textareaElement.style.height = (textareaElement.scrollHeight - textAreaDiff) + 'px'; + const el = this.$refs.textareaElement; + el.style.height = 'auto'; + el.style.height = el.scrollHeight + 'px'; }, handleInputFocus() { diff --git a/packages/mixins/popup/index.js b/packages/mixins/popup/index.js index 95af13559..44700d419 100644 --- a/packages/mixins/popup/index.js +++ b/packages/mixins/popup/index.js @@ -4,16 +4,12 @@ import PopupContext from './popup-context'; export default { props: { - /** - * popup当前显示状态 - */ + // popup当前显示状态 value: { type: Boolean, default: false }, - /** - * 是否显示遮罩层 - */ + // 是否显示遮罩层 overlay: { type: Boolean, default: false @@ -26,13 +22,16 @@ export default { default: false }, zIndex: [String, Number], - /** - * popup滚动时是否body内容也滚动 - * 默认为不滚动 - */ + // popup滚动时是否body内容也滚动 + // 默认为不滚动 lockOnScroll: { type: Boolean, default: true + }, + // 防止滚动穿透 + preventScroll: { + type: Boolean, + default: false } }, @@ -137,8 +136,11 @@ export default { this.$el.style.zIndex = PopupManager.nextZIndex(); this.opened = true; this.opening = false; - document.addEventListener('touchstart', this.recordPosition, false); - document.addEventListener('touchmove', this.watchTouchMove, false); + + if (this.preventScroll) { + document.addEventListener('touchstart', this.recordPosition, false); + document.addEventListener('touchmove', this.watchTouchMove, false); + } }, /** @@ -167,8 +169,11 @@ export default { doAfterClose() { this.closing = false; PopupManager.closeModal(this._popupId); - document.removeEventListener('touchstart', this.recordPosition, false); - document.removeEventListener('touchmove', this.watchTouchMove, false); + + if (this.preventScroll) { + document.removeEventListener('touchstart', this.recordPosition, false); + document.removeEventListener('touchmove', this.watchTouchMove, false); + } } },