【vue】一个例子理解组件

一、接受一个单独的 post对象 prop:

<blog-post
  v-for="post in posts"
  v-bind:key="post.id"
  v-bind:post="post"
></blog-post>

组件内部的实现:

Vue.component('blog-post', {
  props: ['post'],
  template: `
    <div class="blog-post">
      <h3>{{ post.title }}</h3>
      <div v-html="post.content"></div>
    </div>
  `
})

 

二、如果想再添加一个加大字号的事件:

父界面:

<blog-post
  ...
  v-on:enlarge-text="postFontSize += 0.1"
></blog-post>

 

同时子组件可以通过调用内建的 $emit并传入事件名称来触发一个事件:

<button v-on:click="$emit('enlarge-text')">
  Enlarge text
</button>

 

三、如果想传递参数

<button v-on:click="$emit('enlarge-text', 0.1)">

  Enlarge text

</button>

 

然后当在父级组件监听这个事件的时候,我们可以通过 $event 访问到被抛出的这个值:

<blog-post

  ...

  v-on:enlarge-text="postFontSize += $event"

>

</blog-post>

或者,如果这个事件处理函数是一个方法:

<blog-post

  ...

  v-on:enlarge-text="onEnlargeText"

></blog-post>

那么这个值将会作为第一个参数传入这个方法:

methods: {

  onEnlargeText: function (enlargeAmount) {

    this.postFontSize += enlargeAmount

  }

}


  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值