满口金牙 2022-12-10 21:34 采纳率: 91.5%
浏览 56
已结题

Vue 如何在creatElement 得到的input中,设置v-model

const inpuVal = ref<string>('')
function showInput(){
    const inputDom = document.createElement('input')
    // 试看这样给input , 写入 v-model 属性, 失败的写法, 请教正确解答
    inputDom.setAttribute('v-model',inputVal.value)

    const parent = document.querySelector('.workgroup-details')
    parent?.insertBefore(inputDom,null)
    
}

<table>
<td> 
     <SearchBoxVue/>  // 子组件 ,点击出一个 有input的菜单,  怎么让这个子组件,可以不受范围td局限
 </td>
</table>

<template>
    <span id="asdxdfads111" @click="showInput()">
        <a-tooltip placement="topLeft" :title="$t('general.search')" :mouseEnterDelay='0.8'>
            <button class="btn-transparent">
                <search-outlined class="filter-grey-3" />
            </button>
        </a-tooltip>
    </span>
//主要是怎么如这个 input 不被 td 限制的弹出来
    <input class="input-border" v-model="inputVal" v-if="showInputMenu"/>
</template>
<script setup lang="ts">
import { ref,onMounted,watch } from 'vue'
interface Props {
    font_size?:string

}
const props = defineProps<Props>()
const showInputMenu = ref<boolean>(false)
const inputVal = ref<string>('')

function showInput(){
    const inputDom = document.createElement('input')
    inputDom.className ='input-border'
    inputDom.setAttribute('v-model',inputVal.value)
    const parent = document.querySelector('.workgroup-details')
    parent?.insertBefore(inputDom,null)

}

watch(()=>inputVal.value,(newValue)=>{
    console.log('sssssssssssssss',newValue)
})

onMounted(()=>{
    const dom = document.getElementById('asdxdfads111')!
    if(dom.parentElement){
        dom.parentElement.style.position = 'relative'
    }
    
})


  • 写回答

5条回答 默认 最新

  • CSDN专家-showbo 2022-12-10 22:05
    关注

    可以添加input事件,更新v-model绑定的变量值就行了,实际v-model实现也用到input事件

    
        const inpuVal = ref<string>('')
        function showInput() {
            const inputDom = document.createElement('input')
            // 试看这样给input , 写入 v-model 属性, 失败的写法, 请教正确解答
            inputDom.addEventListener('input',function() {
                inputVal.value = this.value;
            }, false);
            //不受限于td,可以用fixed定位,absolute也行,但是absolute是相对于第一个出现的relative定位的父元素来定位,没有的话则是相对于body。fixed是相对于body
            inputDom.style.cssText = `position:fixed;left:50%;top:50%;margin-left:-${input宽度}/2px;margin-top:-${input高度}/2px`
            //inputDom.setAttribute('v-model', inputVal.value)
            const parent = document.querySelector('.workgroup-details')
            parent?.insertBefore(inputDom, null)
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 修改了问题 12月10日
  • 创建了问题 12月10日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来