vue v-for数据无法取到

v-for 循环是使用queryselectorall无法取到数据

<div class="content clearfix">
            <ul>
                <li v-for='item in items' :key=item>
                    <div>
                        <img :src="item.picList[0].imgurl"  alt="item.t_name">
                        <p>{{item.title}}</p>
                        <span>{{item.datanum}}张</span>
                    </div>
                </li>
            </ul>
        </div>
created () {
            this.getData();
        },
    methods: {
            getData () {
                let _this = this;
                this.loading = true;
                this.$http.get('web/app/query.do', {
                    params: {
                        'key': '88845608c16c76ef9f4a56b12e3f238be',
                        'pageSize': '10',
                        'a_no': '001',
                        'classify': '01'
                    }
                }).then((res) => {
                    _this.items = res.body.result;
                    _this.waterfull();
                    console.log(_this.items);
                }, (err) => {
                    console.log(err);
                });
            },
            waterfull () {
                var items = document.querySelector('.content');
                var boxes = items.querySelectorAll('li');
                console.log(items);
                // var totalWidth = items.style.width;
                console.log(boxes);
                }

图片描述

阅读 6.6k
4 个回答

了解实例的生命周期,在created阶段,dom还没有被渲染出来

楼上说的对,你可以在渲染的时候这样写

_this.waterfull();
setTiomout(function(){
    _this.items = res.body.result;
});

这样应该就可以的,如果不行的话,试着在setTimeout里填个时间,毫秒级的就行

确实是生命周期的问题,但是我比较纳闷的是,既然用了vue,为什么还要通过Dom的方式来取呢?

可以使用ref直接绑定dom元素,然后用$refs来操作比较好。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题