Vue.js学习与入门(六)Vue组件

组件需要注册后才能使用,注册分为全局注册和局部注册。全局注册后,所有Vue实例都可以使用该组件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="app">
    <my_counter></my_counter>
    <my_counter></my_counter>
</div>
<script>
    //注册全局组件
    Vue.component('my_counter',{
        data:function(){
            return {
                count:0
            }
        },
        template:'<button @click="count++">点击了{{count}}次</button>'
    });
    var app = new Vue({
        el:'#app',
        data:{},

    });

</script>
</body>
</html>

在这个页面中,注册一个全局组件my-counter,这个组件显示的内容是在template选项中定义的,这里定义了一个<button>模板。点击按钮时,会对这个组件内data函数返回的数据count执行递增操作。

全局组件my-counter注册后,在父实例中可以使用<my-counter></my-counter>这样的形式来使用组件,这里my-counter使用了两次。


把父组件的数据传递给子组件,子组件会根据接收的数据来渲染不同的内容或执行不同的操作。要让子组件使用父组件的数据,需要通过子组件的props选项,使用静态props实现将父组件数据传递给子组件,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="app">
    <child message="Hello Vue!"></child>
</div>
<script>
    //注册全局组件
    Vue.component('child',{
        //声明props,期望从父组件获取数据message
        props:['message'],
        template:'<span>{{message}}</span>'
    });
    var app = new Vue({
        el:'#app',
        data:{},

    });

</script>
</body>
</html>

使用v-bind动态绑定props的值到父组件中,每当父组件的数据变化时,该变化也会传导给子组件。动态props实现将父组件数据传递给子组件,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="app">
    <input type="text" v-model="parentMessage">
    <br>
    <child v-bind:message="parentMessage"></child>
</div>
<script>
    //注册全局组件
    Vue.component('child',{
        //声明props,期望从父组件获取数据message
        props:['message'],
        template:'<span>{{message}}</span>'
    });
    var app = new Vue({
        el:'#app',
        data:{
            parentMessage:'I\'m vue'
        },

    });

</script>
</body>
</html>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值