目录
事件修饰符
Vue通过由点(.)表示的指令后缀来调用修饰符,
.stop
.prevent
.capture
.self
.once
事件冒泡 -->
a v-on:click.stop=“doThis”>
form v-on:submit.prevent=“onSubmit”>
<-- 修饰符可以串联 -->
a v-on:click.stop.prevent=“doThat”>
<-- 只有修饰符 -->
form v-on:submit.prevent>
<-- 添加事件侦听器时使用事件捕获模式 -->
div v-on:click.capture=“doThis”>…
<-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
div v-on:click.self=“doThat”>…
<-- click 事件只能点击一次 -->
a v-on:click.once=“doThis”>
就是会引起另外一个事件发生

Vue允许为v-on在监听键盘事件时添加按键修饰符:
input v-on:keyup.13=“submit”>
Vue为最常用的按键提供了别名
<-- 同上 -->
input v-on:keyup.enter=“submit”>
全部的按键别名:
.enter
.tab
.delete (捕获 “删除” 和 “退格” 键)
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
- <style>
- .f200{
- font-size: 200px;
- }
- </style>
- </head>
- <body>
- <!-- 定义边界 -->
- <div id="app">
- <h3 :class="f200" v-bind:style="colorred">{{msg}}</h3>
- </div>
- </body>
- <script type="text/javascript">
- new Vue({
- el:'#app',
- data(){
- return {
- msg:'hello vue',
- colorred:'color:red;',
- f200:'f200'
- };
- }
- })
- </script>
- </html>
-
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
- <style>
- .red{
- width:400px;
- height: 400px;
- background-color: red;
- }
- .orange{
- width:300px;
- height: 300px;
- background-color: orange;
- }
- .blue{
- width:200px;
- height: 200px;
- background-color: blue;
- }
- .black{
- width:100px;
- height: 100px;
- background-color: black;
- }
- </style>
- </head>
- <body>
- <!-- 定义边界 -->
- <div id="app">
- <p>冒泡事件</p>
- <div class="red" @click="red">
- <div class="orange" @click.stop="orange">
- <div class="blue" @click="blue">
- <div class="black" @click.stop="black"></div>
- </div>
- </div>
- </div>
- <p>提交答案</p>
- <button @click.once="dosub">提交</button>
- <p>按键修饰符</p>
- <input v-on:keyup.enter="dosub()" />
- </div>
- </body>
- <script type="text/javascript">
- new Vue({
- el:'#app',
- data(){
- return {
- f200:'f200'
- };
- },
- methods:{
- red(){
- alert("red");
- },orange(){
- alert("orange");
- },blue(){
- alert("blue");
- },black(){
- alert("black");
- },dosub(){
- alert("已做完,提交答案");
- }
- }
- })
- </script>
- </html>
-

- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
- <title>表单</title>
- </head>
- <body>
- <div id="app">
- <h1>标题</h1>
- <ul>
- <li>
- <p>vue表单</p>
- <label>姓名:</label><input v-model="uname" /><br />
- <label>密码:</label><input v-model="upwd" type="password" /><br />
- <!-- 将用户的输入值转为 Number 类型 -->
- <label>年龄:</label><input v-model.number="age" /><br />
- <label>性别:</label>
- <input type="radio" v-model="sex" name="sex" value="1" />男
- <input type="radio" v-model="sex" name="sex" value="0" />女<br />
- <label>爱好:</label>
- <div v-for="h in hobby">
- <input type="checkbox" v-model="hobbies" v-bind:value="h.id" />{{h.name}}
- </div>
- <label>类别:</label>
- <select v-model="type">
- <option value="-1">===请选择===</option>
- <option v-for="t in types" v-bind:value="t.id">{{t.name}}</option>
- </select><br />
- <label>备注:</label>
- <textarea v-bind:value="mark"></textarea><br />
- 确认<input type="checkbox" v-model="flag" />
- <input type="submit" v-bind:disabled="show" v-on:click="doSubmit" />
- </li>
- </ul>
- </div>
- </body>
- <script type="text/javascript">
- new Vue({
- el: '#app',
- data() {
- return {
- uname: null,
- upwd: null,
- age: 10,
- sex: 1,
- hobby: [{
- id: 1,
- name: '篮球'
- }, {
- id: 2,
- name: '足球'
- }, {
- id: 3,
- name: '象棋'
- }],
- hobbies: [],
- types: [{
- id: 1,
- name: 'A'
- }, {
- id: 2,
- name: 'B'
- }, {
- id: 3,
- name: 'C'
- }],
- type: null,
- mark: '学生备注',
- flag: false
- }
- },
- computed: {
- show: function() {
- return !this.flag;
- }
- },
- methods: {
- doSubmit: function() {
- console.log('doSubmit')
- var obj = {
- uname: this.uname,
- upwd: this.upwd,
- age:this.age+10,
- sex: this.sex,
- hobbies:this.hobbies,
- type: this.type,
- mark: this.mark,
- }
- console.log(obj);
- }
- }
-
- })
- </script>
- </html>
-

- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
- <style>
- .f200{
- font-size: 200px;
- }
- </style>
- </head>
- <body>
- <!-- 定义边界 -->
- <div id="app">
- <!-- 定义组件不能用驼峰命名法 -->
- <!-- 需求是:当引用一个myButton,也就是页面上一个独特标记按钮 -->
- <my-button m="aa"></my-button>
- <my-button m="bb"></my-button>
-
- <!-- <button οnclick=""></button> -->
- </div>
- </body>
- <script type="text/javascript">
- // 定义全局组件的方式
- Vue.component("my-button",{
- // props是定义组件中的变量的
- props:["m"],
- // template代表了自定义组件在页面上显示的内容
- template:'',
- data:function(){
- return{
- n:1
- }
- },
- methods:{
- incrn(){
- this.n++;
- }
- }
- })
- new Vue({
- el:'#app',
- data(){
- return {
- };
- }
- })
- </script>
- </html>
-

- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
- </head>
- <body>
- <div id="app">
- <ul>
- <li>
- <h3>{{ts}}</h3>
- <p>vue组件</p>
- <!-- 使用自定义组件my-button的时候进行传值(相当于jsp标签往助手类中传值的概念) -->
- <my-button m="aa" v-on:three-click="xxx"></my-button>
- </li>
- </ul>
- </div>
- </body>
- <script>
- // 定义全局组件的方式
- Vue.component('my-button', {
- props: ['m'],
- template: '',
- data: function() {
- return {
- n: 0
- };
- },
- methods: {
- doClickMyButton: function() {
- console.log('doClickMyButton方法被调用');
- this.n++;
- if (this.n % 3 == 0) {
- // 触发自定义组件定义的事件,这里可以传递任意个参数
- // 但是触发的事件绑定的函数要与参数个数一致
- this.$emit('three-click', this.n, 'http://www.javaxl.com', 'aa');
- }
- }
- }
- })
- var vm = new Vue({
- el: "#app",
- data: {
- ts: new Date().getTime()
- },
- methods: {
- // 当子组件传值父组件时,只需要在父组件的方法中定义参数即可
- xxx: function(a, b, c) {
- console.log("自定义事件绑定的函数被执行...")
- console.log(a);
- console.log(b);
- console.log(c);
- }
- }
- });
- </script>
- </html>
-
