【vue】$event的理解

一、在原生dom事件里就是事件对象

注意两点

1.不使用圆括号,event被自动当作实参传入

2.使用圆括号,必须显式的传入event对象,如果不传入可能最终找到的是全局的window .event

<button v-on:click="warn('Form cannot be submitted yet.', $event)">
 
  Submit
 
</button>
 
 
 
// ...
 
methods: {
 
  warn: function (message, event) {
 
    // 用来阻止默认事件
 
    if (event) event.preventDefault()
 
    alert(message)
 
  }
 
}

二、自定义事件组件,就是$ emit 的第一个参数

vue中事件绑定v-on,简写可以写作@

例子一:

(1)vue组件发出自定义事件,这个是带参的,不带参数的去掉后边的book

<div class="book-items">
 
            <div class="book" v-for="book in books" @click="$emit('select',book)">
 
                <div class="cover"> <img :src="book.img_url"/> </div>
 
                <div class="title">{{book.title}}</div>
 
                <div class="authors">{{book.authors | join }}</div>
 
            </div>
 
        </div>

(2)组件自定义事件在“页面”的响应,对应一个页面中的方法,这里包含传参,如果不传,一个字符串就可以了

<div class="section">
 
            <!-- 新书上架 -->
 
            <BookList :books="page_data.promotions"
 
                      heading="最新更新"
 
                      @select="preview($event) “>
            </BookList>
        </div>

对应的方法:


<script>
 
    export default{
 
        。。。
 
        methods: {
 
            preview (book) {
 
                this.selected = book
 
            }
 
        }
 
    }
 
</script>

例子二:在input组件中起到的作用也差不多,相当于传入的第一个参数

组件内:

<template>

<div class="grid-content bg-purple-light">

    <el-input

        :placeholder="pl"

        prefix-icon="el-icon-search"

        @keyup.enter.native="$emit('search',$event.target.value)"

        :value="terms"

    >

    </el-input>

</div>

</template>

 

<script>

 

export default{

    props:["terms","pl"]

}

</script>

⚠️:因为使用了element所以这里要加一个native

外部绑定

<MySearch :terms=“terms"  pl="请输入您要筛选的书名" @search="terms=$event">

 

          </MySearch>

 

 

    export default {

      name: 'App',

      data(){

        return{

          terms:"",

        }

      },

 

      components:{

        MySearch,

      },

    }

 

⚠️:v-on也可以在触发的时候运行一些代码,向上边的赋值,以及像这样的小逻辑<button v-on:click="counter += 1">Add 1</button>

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值