vue中事件绑定(和传参)

1.事件绑定

        v-on:事件名="函数"

        简写:@事件名="函数"

        元素事件监听:

         1.监听哪个元素

         2.什么事件

         3.事件处理函数(必须是vue下自定义的函数)

        在vue下如何自定义函数?

          1.methods 中定义。属于选项是api

          2.setuo中定义 并return 输出

          3.在<script setup> 直接定义 handle  在标签上绑定 @click=event=>handle(event)

<body>
    <div id="app">
        <button v-on:click="">绑定点击事件</button>
    </div>
    
    <script>
        let app=Vue.createApp({
            // methods: {
            //     handle(){
            //         console.log('handle run');
            //     }
            // },
            setup() {
                const handle=()=>{
                    console.log('handle ron');
                }
                
                return{
                    handle
                }
            }
            
        })
 
        app.mount("#app");//指定vue根模板 

        // 问题 handle 函数  能做button的事件处理函数吗??
        // 不能   handle 是window 下的函数
        function handle() {
            console.log('handlw ren');
        }
    </script>
    
</body

 2.传参

    事件处理函数传参:

            注意: 事件对象要单独传

            $event   是事件对象  内置api

<body>
    <div id="app">

        <button @click="handle1">默认参数</button>

        <!-- 第一种写法  不推荐 -->
        <button @click="handle2(123,'aaaa',$event)">自定义参数</button>
            <!-- 第二种写法  推荐写法 -->
        <button @click="event=>handle2(123,'aaaa',event)">自定义参数</button>
        <!-- 
            为什么 $event 和 a 都是事件对象呢?
            因为 $event是内置api
            a在元素上定义了函数 触发时间时候执行 行内函数,默认形参赋值 事件对象
         -->

         <!-- 一个事件绑定多个业务处理函数  -->
         <button @click="[handle3,handle4]">点击触发多个函数</button>
         <button @click="event=>{handle3(),handle4()}">点击触发多个函数</button>

    </div>

    <!-- 
        所有操作的都是在虚拟dom上修改,修改完成以后会有底层算法将修改后的虚拟dom编译成真实的dom反馈给页面优化性能,使用框架性能优化 
     -->
    <script>
        let app = Vue.createApp({
            setup() {
                //默认传参事件对象
                //事件对象:记录触发事件的一个详细目录(位置,元素)

                const handle1 = (e) => {
                    console.log(e);
                    console.log(e.target);//获取出发事件的真实dom
                }
                const handle2 = (a,b,c) => {
                    console.log(a,b,c);
                }
                const handle3=()=>{
                    console.log('handle3 run');
                 
                }
                const handle4=()=>{
                    console.log('handle4 run');
                }

                return {
                    handle1,
                    handle2,
                    handle3,
                    handle4,
                }
            }

        })

        app.mount("#app");//指定vue根模板 
    </script>
</body

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鲤忆

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值