<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue組件</title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div class="test"> <zujian></zujian> </div> <script type="text/javascript"> var myComponent = Vue.extend({ //第一步:定義 template: '<div>我是內容</div>' }) Vue.component('zujian',myComponent) //第二步:註冊到Vue上面 var myVue = new Vue({ //第三步:建立實例化 el: '.test' }) </script> </body> </html>
或者用一種簡單的方法建立組件javascript
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue組件</title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body> <template id="lili-template"> <!--注意此處必須是id,用class不行--> <div>我是內容2</div> </template> <div class="test"> <zujian></zujian> </div> <script type="text/javascript"> var myVue = new Vue({ el: '.test', components: { zujian: { template: '#lili-template' } } }) </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue組件--父子組件</title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div class="test"> <!--局部註冊--> <zujian></zujian> </div> <script type="text/javascript"> var childComponent = Vue.extend({ //第一步:定義 template: '<div class="mychild">我是孩子</div>' }); var parentComponent = Vue.extend({ template: '<div class="myParent">我是父容器<child></child></div>', //注意此處要引用孩子組件 components: { 'child': childComponent } }); Vue.component('zujian',parentComponent); //第二步:註冊到Vue上面 var myVue = new Vue({ //第三步:建立實例化 el: '.test' }) </script> </body> </html>
或者另外一種比較明瞭的寫法:html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue組件--父子組件另外一種寫法</title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div class="test"> <zujian></zujian> </div> <template id="parentComponent"> <div class="myParent"> 我是父容器 <child></child> </div> </template> <template id="childComponent"> <div class="mychild"> 我是孩子 </div> </template> <script type="text/javascript"> var myVue = new Vue({ el: '.test', components: { zujian: { template:'#parentComponent', components: { child: { template:'#childComponent' } } } } }) </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue組件--組件選項</title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div class="test"> <div class="lala"> <zujian></zujian> </div> </div> <script type="text/javascript"> var myComponent = Vue.extend({ template: '<div>我是{{a}}{{b}}</div>', data : function () { //不想讓MyComponent 全部的實例將共享同一個 data 對象,因此將data寫成函數形式返回 return { a: 1, b: 2 } }, el: function () { //不想讓MyComponent 全部的實例將共享同一個 el 對象,因此將el寫成函數形式返回 return ".lala" } }) var myVue = new Vue({ el: '.test', components: { zujian:myComponent } }) </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue組件--組件做用域</title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body> <!-- 子組件模板 --> <template id="child-template"> {{msg1}} </template> <!-- 父組件模板 --> <div id="events-example"> <p>Messages: {{ messages | json }}</p> <child :msg1="mssss"> </child> </div> <script type="text/javascript"> var parent = new Vue({ el: '#events-example', data: { messages: '我是父框架222', mssss: 'ddddddd' }, components: { child: { template: '#child-template', props: {msg1: String } } } }) </script> </body> </html>