vue-drag-resize包裹Input框点击之后内容清除了
时间: 2023-08-02 07:08:44 浏览: 257
这个问题可能是由于 vue-drag-resize 组件的点击事件与 Input 框的点击事件相互冲突导致的。你可以尝试在 Input 上添加 @click.stop 来停止事件冒泡,或者在 vue-drag-resize 组件上添加 @mousedown.stop 来阻止鼠标按下事件的冒泡,从而解决这个问题。具体代码示例如下:
```html
<vue-drag-resize @mousedown.stop>
<input type="text" @click.stop />
</vue-drag-resize>
```
另外,你也可以尝试使用其他的拖拽组件,比如 vue-draggable-resizable,看看是否存在相同的问题。
相关问题
vue-drag-resize动态高度
### 实现 `vue-drag-resize` 组件中的动态高度调整
为了实现在 `vue-drag-resize` 组件中动态调整元素的高度,可以通过设置特定的属性来控制组件的行为。该组件提供了丰富的配置选项以便于灵活定制。
#### 配置项说明
- **height**: 设置初始高度。
- **minHeight/maxHeight**: 定义允许调整的最小和最大高度范围[^4]。
当希望实现动态高度调整时,通常会结合双向绑定 (`v-model`) 来同步组件内部状态与外部数据源之间的变化:
```html
<template>
<div id="app">
<!-- 使用 v-bind 动态传递 height 属性 -->
<vue-drag-resize :height.sync="dynamicHeight"
:min-height="100"
:max-height="500">
Dynamic Height Content Here...
</vue-drag-resize>
<!-- 调试用途:显示当前高度值 -->
Current Height: {{ dynamicHeight }}
<!-- 提供手动输入框修改高度 -->
<input type="number" v-model.number="dynamicHeight"/>
</div>
</template>
<script>
import VueDragResize from 'vue-drag-resize';
export default {
components: { VueDragResize },
data() {
return {
dynamicHeight: 200, // 初始高度设为200px
};
}
};
</script>
```
上述代码片段展示了如何利用 `v-model` 或者 `.sync`修饰符让组件内的高度属性与父作用域的数据保持一致,从而达到动态调整的效果。此外,还加入了简单的调试界面用于直观查看并测试不同高度下的表现。
vue-drag-resize包裹Input进行拖拽获取多个Input内容
可以使用vue-drag-resize组件包裹多个Input组件,通过拖拽改变组件大小和位置,然后通过计算组件位置和大小来获取每个Input组件的内容。以下是一个简单的示例代码:
```html
<template>
<vue-drag-resize :w="200" :h="100" :x="10" :y="10" @dragging="onDragging">
<input v-model="input1" />
</vue-drag-resize>
<vue-drag-resize :w="200" :h="100" :x="220" :y="10" @dragging="onDragging">
<input v-model="input2" />
</vue-drag-resize>
<vue-drag-resize :w="200" :h="100" :x="430" :y="10" @dragging="onDragging">
<input v-model="input3" />
</vue-drag-resize>
</template>
<script>
import VueDragResize from 'vue-drag-resize'
export default {
components: {
VueDragResize
},
data() {
return {
input1: '',
input2: '',
input3: ''
}
},
methods: {
onDragging(e, { x, y, w, h }) {
// 计算每个Input组件的位置和大小
console.log(`Input1: x=${x}, y=${y}, w=${w}, h=${h}, value=${this.input1}`)
console.log(`Input2: x=${x + 210}, y=${y}, w=${w}, h=${h}, value=${this.input2}`)
console.log(`Input3: x=${x + 420}, y=${y}, w=${w}, h=${h}, value=${this.input3}`)
}
}
}
</script>
```
在这个示例中,我们使用了vue-drag-resize组件包裹了三个Input组件,并且通过计算每个组件的位置和大小来获取每个Input组件的内容。每当用户拖拽组件时,`onDragging`方法将被调用,并且`x`,`y`,`w`和`h`参数将包含组件的位置和大小。我们可以使用这些参数来计算每个Input组件的位置和大小,并且获取每个Input组件的值。
阅读全文
相关推荐
















