La boucle v-for ne peut pas obtenir de données à l'aide de queryselectorall
<p class="content clearfix">
<ul>
<li v-for='item in items' :key=item>
<p>
<img :src="item.picList[0].imgurl" alt="item.t_name">
<p>{{item.title}}</p>
<span>{{item.datanum}}张</span>
</p>
</li>
</ul>
</p>
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);
}
Comprenez le cycle de vie de l'instance. À l'étape de création, le dom n'a pas encore été rendu
La personne ci-dessus a raison, vous pouvez écrire comme ça lors du rendu
Cela devrait fonctionner. Sinon, essayez de renseigner une heure dans setTimeout, des millisecondes suffiront
C'est en effet un problème de cycle de vie, mais ce qui me rend le plus confus, c'est que puisque vue est utilisée, pourquoi devons-nous le récupérer via Dom ?
Vous pouvez utiliser ref pour lier directement les éléments dom, puis utiliser $refs pour fonctionner.