详解使用vue实现tab 切换操作
在使用jQuery类库实现tab功能时,是获取鼠标在mousenter或click时的index值,然后切换到当前的标题和内容,把其他的标题和内容的状态去掉: 那么在使用vue实现tab功能时,就不是像jQuery这种直接操作DOM了。我这里总结了下实现tab功能的3个思路,仅供参考。 1. 切换content或者直接切换内容这种思路下,我们首先把结构搭建起来,然后用一个变量selected表示tab当前展示的位置,给li标签添加mouseenter或click事件,将当前的index传递进去: html代码: js代码:
{{message}} 绑定的 上面的代码里,我们是通过切换div的显示与隐藏来进行执行的。tab中的content里如果只有纯html内容,我们可以直接把 每次selected变换时,bd的内容都会发生变化。 2. 使用currentView在上面的实现方式中,第3个tab里有个输入框与p标签双向绑定,但是没有效果,因为vue是把list中的内容作为html元素填充到页面中的,message并没有作为vue的属性绑定给input。那么使用组建和currentView就能弥补这个缺陷。 无论使用全局注册还是局部注册的组件,思路都是一样的,我们暂时使用全局注册的组件来实现。 每个组件里展示的是一个tab里的内容,先注册3个组件: 2222211content '
});
// tab1
Vue.component('item1',{
template : '222222content '
})
// tab2
Vue.component('item2',{
data(){
return{
message : ''
}
},template : `
{{message}} 然后在html中使用component来展示对应组件的内容,title的展示方式不变: currentView属性可以让多个组件可以使用同一个挂载点,并动态切换: 这样 message 在组件里就是一个独立的data属性,能在tab里也使用vue绑定事件了. 3. 使用slot方式等使用 3.1 slot用slot方式写一个子组件: 父组件模板: 父组件中 3.2 其他组件方式还有一种方式就是把所有的模板都写到组件中。 子组件: 父组件: 这种只需要传递一个list即可。 对比这两种方法,slot中可以自定义更多的内容,而下面的方法使用起来更加简单,只是自定义的东西比较少。 4. 总结上面讲解了几种实现tab功能的方式,没有说哪种方式最好,选择最适合自己项目需求的方式就是最好的。文中有哪有错误或不足,欢迎批评指正。也希望大家多多支持编程之家。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |