问题描述
我试图在 data-xxx
循环中获取所有 x-for
,但 nodeList
始终为空。
<section id="content" x-data="animate()" x-init="init()">
<h1>Title here</h1>
<template x-for="i in items">
<div class="Box" data-class-in="fadeIn" data-class-out="fadeOut">
<h2>Content Here</h2>
</div>
</template>
</section>
这是我的js代码
function animate() {
return {
items: 12,target = null,init: function () {
this.target = document.querySelectorAll("[data-class-in],[data-class-out]");
console.log(this.target);
},}
}
也尝试过 this.$el.querySelectorAll("[data-class-in],[data-class-out]")
。什么都没有发生
有什么帮助吗?
非常感谢
解决方法
您需要等待初始 x-for
渲染发生,在 Alpine 中使用 $nextTick()
完成(请参阅文档 https://github.com/alpinejs/alpine/#nexttick)
function animate() {
return {
items: 12,target = null,init: function () {
// setTimeout(() => {},0) should also work
this.$nextTick(() => {
this.target = document.querySelectorAll("[data-class-in],[data-class-out]");
console.log(this.target);
});
},}
}