一、问题引入
原项目把一块内容直接写在了模块中(浏览器显示的一整个页面),现在想把它提成一个单独组件,而且把其中使用 documentgetElementById('id') 改为 ref 获取元素的形式。
单独创建一个 vue 组件,通过绑定传值,触发页面变化从而触发 beforeUpdate 。
然后发现 beforeUpdate() 中根本获取不到此元素,用原生js获取也不行。
三、解决
1、 beforeUpdate() 生命周期函数中,在获取元素语句外套用 this$nextTick(function(){}) 。( mounted 无效,原因待查明)
官方解释:将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。即DOM真正加载完成。
var vm=new Vue({
el:'#app',
data{
isShow:false
},
components:{
to-do: to-do
},
methods:{
btn: function(){
thisdataisShow = true;
}
}
})
<div id="app">
<ul id="test">
<to-do v-show="isShow"></to-do>
</ul>
</div>
<button type="button" @touchstart="btn">添加li标签</button>
Spark有个关于是否允许一个application存在多个SparkContext实例的配置项, 如下: sparkdriverallowMultipleContexts: If true, log warnings instead of throwing exceptions when multiple SparkContexts are active该值默认为false, 即不
场景:A页面跳转到B页面并携带参数
11不带参数:
12带参数:
21不带参数:
22 query传参
23 params传参
24 直接通过path传参
25 传递对象(obj不能过长否则会报错)
26 params和query的区别
用法同上: this$routerpush()
向前或者向后跳转n个页面,n可为正整数或负整数
1 this$routerpush
跳转到指定url路径,并在history栈中添加一个记录,点击后退会返回到上一个页面
3 this$routergo(n)
向前或者向后跳转n个页面,n可为正整数或负整数
1 query 可以用 name 和 path 匹配路由,通过 this$routequeryid 获取参数,刷新浏览器参数不会丢失
2 params 只能用 name 匹配路由,通过 path 匹配路由获取不到参数,对应的路由配置 path:'/home/:id' 或者 path:'home:id' ,否则刷新浏览器参数丢失
3直接通过url传参, push({path: '/home/123'}) 或者 push('/home/123') ,对应的路由配置 path:'/home/:id' ,刷新浏览器参数不会丢失
在传值页面添加点击按钮,给点击按钮添加跳转的点击事件。
这里用this$routerpush,用query方法传值。name指定要传到的页面。query指名要带的参数。 thisredirect:当出错时跳转到404
接受值的页面用this$routequeryid接受值。id为传值页面query里面的id。
接受值是route而不是router
以上就是关于.vue组件中获取DOM元素问题全部的内容,包括:.vue组件中获取DOM元素问题、如何将vue里的id传到html页面、vue怎么解决多页面ID重复的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)