Vue动态组件demo

<div id="dynamic-component-demo" class="demo">
      <button 
      v-for="(tab,index) in tabs"
      v-bind:key="index"
      v-bind:class="['tab-button',{acitve:currentTab === tab}]"
      v-on:click="currentTab = tab"
      >
        {{ tab }}
      </button>
      <component :is="currentTabComponent"></component>
    </div>



    <div id="dy-component-two">
      <button
        v-for="tab in tabs"
        v-bind:key="tab.name"
        v-bind:class="['tab-button',{ active: currentTab.name === tab.name}]"
        v-on:click="currentTab = tab"
      >
        {{ tab.name }}
      </button>
      <component :is="currentTab.component"></component>
    </div>


script:
 var tabs = [
        {
          name:"Home",
          component:{
            template:'  <div>Home component 1111 </div> '
          }
        },
        {
          name:"Posts",
          component:{
            template:'<div>Posts component 2222</div>'
          }
        },{
          name:"Archive",
          component:{
            template:'<div>Archive component 3333 </div>'
          }
        }
      ]

        new Vue({
          el:'#dy-component-two',
          data:{
            tabs:tabs,
            currentTab:tabs[0]
          }
        })


      Vue.component('tab-home',{
        template:`
          <div>Home component</div>
        `
      })
      Vue.component('tab-posts',{
        template:`<div>Posts component</div>`
      })
      Vue.component('tab-archive',{
        template:`<div>Archive component</div>`
      })

      new Vue({
        el: "#dynamic-component-demo",
        data: {
          tabs: ["Home", "Posts", "Archive"],
          currentTab: "Home"
        },
        computed:{
          currentTabComponent:function(){
            return "tab-"+this.currentTab.toLowerCase();
          }
        }
      });

在这里插入图片描述
已注册组件的名字,或
一个组件的选项对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值