属性/事件绑定
<body>
<div id="app">
<p v-text="username"></p>
<p v-text="gender"></p>
<p>点击数:{{count}}</p>
<button @click="addCount">+1</button>
</div>
<script src="./vue-2.6.12.js"></script>
<script>
const mv = new Vue({
el: "#app",
data: {
username: "zs",
gender: "男",
count: 0,
},
methods: {
addCount() {
this.count += 1
}
}
})
</script>
</body>
事件对象event
<body>
<div id="app">
<p v-text="username"></p>
<p v-text="gender"></p>
<p>点击数:{{count}}</p>
<button @click="addCount">+1</button>
</div>
<script src="./vue-2.6.12.js"></script>
<script>
const mv = new Vue({
el: "#app",
data: {
username: "zs",
gender: "男",
count: 0,
},
methods: {
addCount(e) {
const nowBgColor = e.target.style.backgroundColor
e.target.style.backgroundColor = nowBgColor === "red" ? "" : "red"
console.log(nowBgColor)
this.count += 1
}
},
})
</script>
</body>
绑定事件并传参
<body>
<div id="app">
<p v-text="username"></p>
<p v-text="gender"></p>
<p>点击数:{{count}}</p>
<button @click="addCount(3)">+3</button>
</div>
<script src="./vue-2.6.12.js"></script>
<script>
const mv = new Vue({
el: "#app",
data: {
username: "zs",
gender: "男",
count: 0,
},
methods: {
addCount(step) {
this.count += step
}
},
})
</script>
</body>
事件传参之$event
<body>
<div id="app">
<p v-text="username"></p>
<p v-text="gender"></p>
<p>点击数:{{count}}</p>
<button @click="addCount(3,$event)">+3</button>
</div>
<script src="./vue-2.6.12.js"></script>
<script>
const mv = new Vue({
el: "#app",
data: {
username: "zs",
gender: "男",
count: 0,
},
methods: {
addCount(step, e) {
const nowBgColor = e.target.style.backgroundColor
e.target.style.backgroundColor = nowBgColor === "red" ? "" : "red"
console.log(nowBgColor)
this.count += step
}
},
})
</script>
</body>
事件修饰符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.inner {
line-height: 100px;
background-color: aliceblue;
font-size: 13px;
text-align: center;
}
.outer {
background-color: bisque;
padding: 50px;
font-size: 13px;
}
.box {
background-color: coral;
padding: 50px;
}
</style>
</head>
<body>
<!-- 在页面中声明一个将要被 vue 所控制的 DOM 区域 -->
<div id="app">
<h4>① .prevent 事件修饰符的应用场景</h4>
<a href="https://www.baidu.com" @click="onLinkClick">百度首页</a>
<hr/>
<h4>② .stop 事件修饰符的应用场景</h4>
<div class="outer" @click="onOuterClick">
外层的 div
<div class="inner" @click="onInnerClick">内部的 div</div>
</div>
<hr/>
<h4>③ .capture 事件修饰符的应用场景</h4>
<div class="outer" @click="onOuterClick">
外层的 div
<div class="inner" @click="onInnerClick">内部的 div</div>
</div>
<hr/>
<h4>④ .once 事件修饰符的应用场景</h4>
<div class="inner" @click="onInnerClick">内部的 div</div>
<hr/>
<h4>⑤ .self 事件修饰符的应用场景</h4>
<div class="box" @click="onBoxClick">
最外层的 box
<div class="outer" @click="onOuterClick">
中间的 div
<div class="inner" @click="onInnerClick">内部的 div</div>
</div>
</div>
<hr/>
</div>
<script src="./vue-2.6.12.js"></script>
<script>
const vm = new Vue({
el: '#app',
methods: {
onLinkClick() {
alert('ok')
},
onOuterClick() {
console.log('触发了 outer 的 click 事件处理函数')
},
onInnerClick() {
console.log('触发了 inner 的 click 事件处理函数')
},
onBoxClick() {
console.log('触发了 box 的 click 事件处理函数')
}
},
})
</script>
</body>
</html>
<a href="https://www.baidu.com" @click.prevent="onLinkClick">百度首页</a>
<div class="inner" @click.stop="onInnerClick">内部的 div</div>
<div class="outer" @click.capture="onOuterClick">
<div class="inner" @click.once="onInnerClick">内部的 div</div>
<div class="outer" @click.self="onOuterClick">
按键修饰符