Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
117 views
in Technique[技术] by (71.8m points)

求解:$refs打印v-for循环出的数据为undefined。

我的目的是搜索名字出来给它这个列表加标识加图标,但是获取dom这部就失败了。
image.png

 <div class="home">
     <input type="text" v-model="names" />
     <input type="button" @click="search" value="检索" />
     <div class="list-box">
         <div
         ref="list"
         v-for="node of treeList"
         :style="{
         paddingLeft: node.level * 10 + 'px',
         }"
         :key="node.id"
         >
            {{ node.name }}
         </div>
     </div>
 </div>

这是我查了为什么会undefined之后试了的方法以及相关代码:

function treeToList(tree)?{
     const result = tree.map((i) => ((i.level = 0), i));
         for (let i = 0; i < result.length; i++)?{
             if (!result[i].child) continue;
             result[i].child.forEach((x) => (x.level = result[i].level + 1));
             result.splice(i + 1, 0,?...result[i].child);
         }
     return result;
}

mounted(){
     this.$nextTick(() => {
        this.txt = this.$refs.list.innerText
     });
 },
 computed: {
     treeList()?{
        return treeToList(this.list)
     },
 },
 methods: {
     async search()?{
         await this.$nextTick();
         console.log(this.$refs.list.innerText)
     },
 },
 

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

v-for 里面 refs 是个数组 你 log 一下就知道了

this.$refs.list  // 数组
this.$refs.list.innerText  ==>  [].innerText = undefined

补个源码图

image.png


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...