Vue从入门到精通-14-Vue组件

子组件的定义和注册

我们在本文的第一段中,通过Vue.component形式定义的是全局组件。这一段中,我们来讲一下子组件

在父组件中定义子组件

比如说,一个账号模块是父组件,里面分为登陆模块和注册模块,这两个晓得模块就可以定义为子组件。

需要注意的是作用域的问题:我们在父组件中定义的子组件,只能在当前父组件的模板中使用;在其他的组件,甚至根组件中,都无法使用。

 
<!DOCTYPE html>
 <html lang="en">
 ​
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Document</title>
     <script src="vue2.5.16.js"></script>
 </head>
 ​
 <body>
 ​
     <div id="app">
         <account>
 ​
         </account>
     </div>
 ​
     <script>
 ​
         //定义、注册组件
         Vue.component('account', {
             template: '<div><h2>账号模块</h2> <login></login></div>',
             components: {
                 'login': {
                     template: '<h3>登录模块</h3>'
                 }
             }
         });
 ​
         new Vue({
             el: '#app'
         });
     </script>
 </body>
 ​
 </html>

我们发现,既然是定义父亲<account>的子组件,那么,子组件<login>的调用,只能写在父组件<account>template模板中。

显示效果:

在 Vue 根实例中定义子组件

当然,我们还可以这样做:把整个 Vue 对象当成父亲,这样的话,就可以在 Vue 示例中定义一个子组件。如下:

 <!DOCTYPE html>
 <html lang="en">
 ​
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Document</title>
     <script src="vue2.5.16.js"></script>
 </head>
 ​
 <body>
 ​
     <div id="app">
         <login> </login>
     </div>
 ​
     <script>
 ​
         new Vue({
             el: '#app',
             //在Vue实例中定义子组件
             components: {  // components 是关键字,不能改
                 'login': {
                     template: '<h3>登录模块</h3>'
                 }
             }
         });
     </script>
 </body>
 ​
 </html>
 ​

这样写的话,我们定义的子组件<login>在整个#app区域,都是可以使用的。

上面的代码,还有另外一种写法:(把子组件的模板定义,存放到变量中)【重要】

 <!DOCTYPE html>
 <html lang="en">
 ​
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Document</title>
     <script src="vue2.5.16.js"></script>
 </head>
 ​
 <b
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被瞧不起的神

谢谢啦,感谢支持|一起努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值