首页 > 编程 > JavaScript > 正文

vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码

2019-11-19 11:52:59
字体:
来源:转载
供稿:网友

具体代码如下所示:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">  </div>  <script>    var Aaa=Vue.extend({//继承出来一个Vue类Aaa      template:'<h3>我是标题3</h3>'    });    var a=new Aaa();//a跟vm一样    console.log(a);    var vm=new Vue({      el:'#box',      data:{        bSign:true      }    });  </script></body></html>
<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">    <aaa></aaa>  </div>  <script>    var Aaa=Vue.extend({      template:'<h3>我是标题3</h3>'    });    Vue.component('aaa',Aaa);//aaa是组建实例,全局组件    var vm=new Vue({      el:'#box',      data:{        bSign:true      }    });  </script></body></html>
<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">    <aaa></aaa>  </div>  <script>    var Aaa=Vue.extend({      data(){        return {          msg:'我是标题^^'        };      },      template:'<h3>{{msg}}</h3>'    });    Vue.component('aaa',Aaa);    var vm=new Vue({      el:'#box',      data:{        bSign:true      }    });  </script></body></html>
<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">    <aaa></aaa>  </div>  <script>    var Aaa=Vue.extend({      data(){        return {          msg:'我是标题^^'        };      },      methods:{        change(){          this.msg='changed'        }      },      template:'<h3 @click="change">{{msg}}</h3>'    });    Vue.component('aaa',Aaa);    var vm=new Vue({      el:'#box',      data:{        bSign:true      }    });  </script></body></html>


<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">    <aaa></aaa>  </div>  <script>    var Aaa=Vue.extend({      template:'<h3>{{msg}}</h3>',      data(){// es6语法,函数不写:,组件里面放数据: data必须是函数的形式,函数必须返回一个对象(json)        return {          msg:'ddddd'        }      }    });    var vm=new Vue({      el:'#box',      data:{        bSign:true      },      components:{ //局部组件,放到某个组件内部,Vue.component('aaa',Aaa);        aaa:Aaa      }    });  </script></body></html>
<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">    <my-aaa></my-aaa>  </div>  <script>    var Aaa=Vue.extend({      template:'<h3>{{msg}}</h3>',      data(){        return {          msg:'ddddd'        }      }    });    var vm=new Vue({      el:'#box',      data:{        bSign:true      },      components:{ //局部组件        'my-aaa':Aaa      }    });  </script></body></html>
<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">    <my-aaa></my-aaa>  </div>  <script>    Vue.component('my-aaa',{//全局,公共的提出去      template:'<strong>好</strong>'    });    var vm=new Vue({      el:'#box'    });  </script></body></html>
<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">    <my-aaa></my-aaa>  </div>  <script>    var vm=new Vue({      el:'#box',      components:{ //局部        'my-aaa':{          data(){            return {              msg:'welcome vue'            }          },          methods:{            change(){              this.msg='changed';            }          },          template:'<h2 @click="change">标题2->{{msg}}</h2>'        }      }    });  </script></body></html>
<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">    <my-aaa></my-aaa>  </div>  <template id="aaa">    <h1>标题1</h1>    <ul>      <li v-for="val in arr">        {{val}}      </li>    </ul>  </template>  <script>    var vm=new Vue({      el:'#box',      components:{        'my-aaa':{          data(){            return {              msg:'welcome vue',              arr:['apple','banana','orange']            }          },          methods:{            change(){              this.msg='changed';            }          },          template:'#aaa'        }      }    });  </script></body></html>
<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Document</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">    <my-aaa></my-aaa>  </div>  <script type="x-template" id="aaa">    <h2 @click="change">标题2->{{msg}}</h2>    <ul>      <li>1111</li>      <li>222</li>      <li>3333</li>      <li>1111</li>    </ul>  </script>  <script>    var vm=new Vue({      el:'#box',      components:{        'my-aaa':{          data(){            return {              msg:'welcome vue'            }          },          methods:{            change(){              this.msg='changed';            }          },          template:'#aaa'        }      }    });  </script></body></html>
<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>动态组件</title>  <script src="bower_components/vue/dist/vue.js"></script>  <style>  </style></head><body>  <div id="box">    <input type="button" @click="a='aaa'" value="aaa组件">    <input type="button" @click="a='bbb'" value="bbb组件">    <component :is="a"></component> <!-- 动态组件-->  </div>  <script>    var vm=new Vue({      el:'#box',      data:{        a:'aaa'      },      components:{        'aaa':{          template:'<h2>我是aaa组件</h2>'        },        'bbb':{          template:'<h2>我是bbb组件</h2>'        }      }    });  </script></body></html>

下面看下vue component动态组件

 动态组件

通过component标签 的is属性来进行组件的切换

is的属性值决定要显示的组件,所以将is的属性值设置为data中的值,以便于动态变化

<template>  <div class="app">      <component :is="组件名称">       </component>  </div></template>

总结

以上所述是小编给大家介绍的vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表