博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue v-for渲染页面,获取不到DOM元素解析
阅读量:7045 次
发布时间:2019-06-28

本文共 1911 字,大约阅读时间需要 6 分钟。

v-for 渲染循环渲染页面的出现让我们告别了繁琐的JS拼接,在开发上面节省了很多时间。

近期在开发中发现了在某些特定情况下,出现了获取不到渲染出来的DOM元素的情况,原因身为小白的我暂时还没搞清楚(忘大佬指出),但是却得出来初步的解决方案。

  • HTML 代码
  • {
    {item.age}}
    • JS 代码(错误代码)
    // 错误代码示例一var vm = new Vue({    el: '#app',    data: {        abc: new Object()    },    mounted: function () {        this.getList();        var li = document.querySelectorAll('li');        console.log(li.length);     // 输出0    },    methods: {        getList: function () {             var data = [                 { name: '1', age: '21' },                 { name: '2', age: '22' },                 { name: '3', age: '23' },                 { name: '4', age: '24' },                 { name: '5', age: '25' }             ];             this.$set(this, 'abc', data);         }    }})
    // 错误代码示例二var vm;window.onload = function(){    vm = { ... } // 实例化代码如上,去除 mounted 生命周期    vm.getList();    var li = document.querySelectorAll('li');    console.log(li.length);     // 输出0}

    上述代码中的 li 即是通过 v-for 渲染生成,但是两种方式获取 li 输出的长度都为0。

    最终发现将数据初始化放到 beforeMount 里面即可在 mounted 里面正确输出获取到 li 元素的长度。

    • JS 代码(解决方案)
    // 解决方案一(数据初始化放在挂载之前)var vm = new Vue({    el: '#app',    data: {        abc: new Object()    },    beforeMount: function(){         this.getList();    },    mounted: function () {         var li = document.querySelectorAll('li');         console.log(li.length)     // 输出5    },    methods: {        getList: function () {             var data = [                 { name: '1', age: '21' },                 { name: '2', age: '22' },                 { name: '3', age: '23' },                 { name: '4', age: '24' },                 { name: '5', age: '25' }             ];             this.$set(this, 'abc', data);       }    }}) // 解决方案二(mounted周期里面使用VUE自带钩子函数$nextTick做处理)mounted: function () {    this.getList();    this.$nextTick(function () {          var li = document.querySelectorAll('li');          console.log(li.length)  // 输出 5    })}

    转载地址:http://uxhal.baihongyu.com/

    你可能感兴趣的文章
    c++ builder xe2 debug正常 release崩溃 解决一例
    查看>>
    Hibernate学习之hibernate.cfg.xml
    查看>>
    [转] 字符集编码(GBK,BIG5,UNICODE)与C++的string/wstring
    查看>>
    初识Ansible
    查看>>
    mysql5.6和mariadb远程拉取二进制日志
    查看>>
    十个实用的linux工具
    查看>>
    layer给iframe页面传值
    查看>>
    pxe
    查看>>
    Linux unit 12
    查看>>
    远程的POWERSHELL
    查看>>
    Spark 分析网站排名热度
    查看>>
    代码经验总结
    查看>>
    关于san和nas里面backup 和snapshoot的job
    查看>>
    laravel 服务容器实现原理
    查看>>
    laravel5自定义分页
    查看>>
    nginx的upstream目前支持5种方式的分配
    查看>>
    kill命令详解
    查看>>
    python基础
    查看>>
    手机端问题
    查看>>
    cat
    查看>>