Vue.js的组件(二)父组件与子组件的数据联系 之 父传子

假设有如下组件:

/*js*/
Vue.component('my-button',{
    tempalte:'<button>一个按钮</button>'
})
var app3 = new Vue({
    el:'#app3',
    data:{
        message:0
    }
})
/*html*/
<div id="app3">
    <mybutton></mybutton>
</div>

父组件和子组件是相对于作用域而言的。因为他们都是Vue()的实例,有各自独立的作用域。

先理清谁是父谁是子。

<div id="app3"></div> //父
<button>一个按钮</button> //子

首先,父可以传数据给子。
也就是app3的数据给button

怎么传?

通过组件的一个属性props.
现在对上面的组件加上这个属性,变成了下面这样。

/*js*/
Vue.component('my-button',{
    props:['deliver'],
    tempalte:'<button>{{deliver}}</button>'
})
var app3 = new Vue({
    el:'#app3',
    data:{
        message:'把我传给子组件'
    }
})
//html
<div id="app3">
    <my-button v-bind:deliver="message"></my-button>
</div>

这样就成功的将父的数据传给子了。

要注意的是,porps里不能有- ,不能有驼峰。

父传给子的这个message是单向绑定的,app3.message如果改变了,那子模板也会改变。
如果子模板想要加工从porps中得到的数据从而变成自己想要的数据,可以使用 computed属性,这时候,组件就改成了这样:

Vue.component('my-button',{
    props:['deliver'],
    tempalte:'<button>{{counter}}</button>'
    computed:{
        counter:function(){
            return this.deliver+'hello world'
        }
    }
})

现在,你的数据被加工成,message+’hello world’了,而且会根据message的变化而变化。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值