需求:获取站点信息,并默认触发第一个站点的点击事件:
<div class="station-list">
<el-scrollbar>
<div v-for="(item,index) in stationList" :key="index" class="station-item">
<span class="delete" @click="deleteStation(item,$event)">删除</span>
<el-button type="primary" @click.stop="handStationItemClick(item, $event)">{{ item.title }}</el-button>
</div>
</el-scrollbar>
</div>
想在mounted当中获取dom,获取不到
使用 this.$nextTick 也不好用;
使用setTimeout,设置延时可以,但是在网速不好的情况下还是有问题。所以不推荐;
解决方法:
在watch当中监听stationList数组,然后在watch函数中,通过nextTick获取Dom节点;
watch: {
stationList: function(val) { // 数据是异步加载的,想要获取dom,使用watch
this.$nextTick(() => {
if (this.activeStation === 'first') {
$('.station-item').eq(0).find('.el-button').click()
} else if (this.activeStation === 'last') {
$('.station-item').last().find('.el-button').click()
}
})
}
},