vue 动态组件名_vue动态加载组件mounted无法获取dom的解决思路

有时我们在mouted方法中想通过id读取到一个dom元素,虽然官方并不推荐这种方法来操作dom。但难免有碰到这种情况,如下面

3bb7687e8b882a73ea13c0f7f714949c.png

一个dom元素

6abb5fc18ad861808d5c54c096230162.png

试图在mouted中获取 试图在nextick中获取 结果还是为空

究其原因,还是该dom元素未在文档中生成。所以用document.getelementId 是无法获取到该元素的

解决方法

在vue文档中 关于的自定义指示器中有这么一段话

6dd1f48b8d7328e3a48757ca3c64f316.png

通过自定义指示器的insertd hook 我们可以捕获该元素被插入到父节点的时刻,做进一步处理

于是我们可以封装这么一个directive

42402fe7e7fd5533c46cecb13cad1c2b.png

然后在你需要捕获的dom元素中写入v-lazydom

d7932f2b0d36a1dacf017208306804b9.png

只要在你包含该元素的组件中 定义一个lazyready 方法 便可获取到该元素

ecd8619d5cfa496234ed8f6d64990b36.png

至少显得比直接使用settimeout干净点

如果你有多个元素需要捕获 的话,lazyready会触发多次,这时你可以通过捕获元素的id或者tag来区分,就不展开了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值