关于vue.js中的事件

原生js中的事件基础内容:

  1. 属性绑定
<div onClick = "alert"></div>
function alert(){
alert('hello vue.js')
}
  1. js操作
    // 1. 获取数据
    var data = ‘hello vue.js’
    // 2. 获取DOM
    var app = document.querySelector(’#app’)
    // 3. 渲染数据
    app.innerHTML = data
    // 4. 添加事件
    app.onclick = function(){
    app.style.background = ‘red’
    }
    事件的组成部分:
  2. DOM
  3. on 添加事件的形式
  4. 事件类型 click
  5. 事件处理函数
vue.js事件

1.用 v-on添加事件
2.事件处理函数写在配置项中的methods中
3.书写步骤:先写方法,再去绑定
方法书写:



<script>
    new Vue({
        el: '#app',
        methods: { 
/* 一个key 就是一个方法 */
            changeMsg() {
                      //执行代码块
            },
    })
</script>


绑定事件:
例:

<button v-on:click="changeMsg">
</button>

可使用“ @ ”简写:

<button @click="changeMsg">
</button>

思考:假如我们有一个方法,这个方法里有两个参数,第一个为自定义参数,第二个参数为事件对象,为什么第二个事件对象会等于undefined。

原因:当我们自定义参数后,系统无法是别是不是对象事件。

解决方法:传入事件对象的事件参数,也就是实参:$event

1. 事件修饰符

vue这边可使用事件修饰符(modify)
格式:
v-on:eventType.modify = eventFnName
类型:
.stop : 阻止冒泡行为
.prevent :阻止浏览器默认行为
.capture : 阻止捕获行为
.self : 自身触发
.once : 只执行一次
.passive : 行为结束后触发(scroll)

2. 按键修饰符 ( 键盘事件 keyup keydown keypress)

.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right

3. 自定义按键修饰符
1. 全局修改

Vue.config.keyCodes.自定义修饰符 = 键盘码
使用:
@keyup.自定义修饰符 = eventFnName

2. 自定义事件(自定义事件类型)

如何定义?

  1. 使用new Vue() 的到的实例来定义
    vm.$on(eventName,callback)
  2. 如何触发呢?
    vm. e m i t ( e v e n t N a m e ) t h i s . emit(eventName) this. emit(eventName)this.emit(eventName)
单项数据绑定

数据更改,视图就更改
使用api中的v-bind来实现

  1. 概念;
    将数据和属性进行绑定, 也就是原生身上的属性的值就是数据

  2. 格式
    v-bind:attr = data
    简写:
    :attr = data
    例:



<body>
    <div id="app">
        <input type="text" v-bind:value="msg">
    </div>
</body>
<script>
    new Vue({
        el: '#app',
        data: {
            msg: '你好哇,我的鹿鹿~'
        }
    })
</script>




双向数据绑定

数据改变, 视图更新,
视图改变, 数据更新

  1. 格式:
    v-model:attr=data
    简写:可以省略属性
    v-model=data
  2. 特别强调:
    v-model用于表单, v-model默认绑定了value属性
    例:

<body>
    <div id="app">
        <input type="text" v-bind:value="msg" @input="inValue">
    </div>
</body>
<script>
    new Vue({
        el: '#app',
        data: {
            msg: '你好哇,我的鹿鹿~'
        },
        methods: {
            inValue(e) {
                this.msg = e.target.value
            }
        }
    })
</script>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值