美文网首页
Vue 修饰符

Vue 修饰符

作者: lyp82nkl | 来源:发表于2019-07-09 22:14 被阅读0次

修饰符

stop :阻止事件冒泡。
    <div id="App">
        <div @click="divclick" style="height: 100px;width: 100px;background-color:dodgerblue;">
            <button @click.stop="btnclick">点我</button>
        </div>
     
    </div>
    <script>
        var App = new Vue({
            el: '#App',
            data: {

            },
            methods: {
                divclick: function () {
                    alert('div被点击了')
                },
                btnclick: function () {
                    alert('btn 被点击了')
                },
            }
        })
    </script>
  • 当点击 div 时(不点击 button ),控制台会打印出 "div被点击了" ;
  • 当点击 button 时,控制台会打印出 "div被点击了" 和 "btn 被点击了" 。
    这是因为,button 作为 div 的子元素,当点击 子元素button 时,button 的单击事件会冒泡到 父元素div ,从而触发 div 的 click 事件。所以会先执行 button 的 click 事件,再执行 div 的 click 事件。
    很多时候,并不希望事件往上冒泡,对于这个问题, stop 修饰符可以阻止事件冒泡。
    <button @click.stop="btnclick">点我</button>
prevent :提交事件,并且不重载页面。
<form action="" @submit="hangle">
    <button type="submit">提交表单</button>
</form>

<script>
    var App = new Vue({
        el: '#App',
        data: {

        },
        methods: {
            handle() {
                console.log('表单被提交了') // 3、表单提交后,打印文本
            }
        }
    })
</script>

上面代码中,当点击表单中的提交按钮后,表单就会被提交,控制台会打印文本,并且页面会被刷新。需要注意的是,submit 事件应该定义在 form 元素上,而不是 button 元素上。
页面被刷新不利于用户体验,所以需要阻止页面刷新,可以用 prevent 修饰符:

<form action="" @submit.prevent="hangle">
    <button type="submit">提交表单</button>
</form>
self :只有当前元素自身才能触发,当前元素的子元素不能触发。

以上面事件冒泡为例:
父元素div 可能会有很多个子元素,如果其他子元素也有 click 事件,那么就要给所有子元素加上 stop 修饰符,很麻烦。
所以,希望所有子元素都不要触发父元素的 click 事件,只让父元素自己触发自己的 click 事件。只需要给父元素加上 self 修饰符即可。

self语法:只是作用在元素本身而非子元素的时候调用
        <br>
        <div @click.self="divclick" style="height: 100px;width: 100px;background-color:dodgerblue;">
            <button @click="btnclick">点我</button>
        </div>
  • stop 是写在子元素上的,而 self 是写在父元素上的;
  • stop 是为了阻止子元素的事件向父元素冒泡,self 是为了不让子元素触发父元素的事件。
once :让事件只触发一次。
<div id="app">
    <button @click.once="once">once</button>  
    <button @click="more">more</button>      
</div>



<script>
    var App = new Vue({
        el: '#App',
        data: {

        },
        methods: {
            once() {
                console.log('只执行一次')
            },
            more() {
                console.log('执行多次')
            }
        }
    })
</script>

第一个 button 的 click 后面跟了一个 ".once",只执行一次;第二个 button 没有 ".once",可以执行多次。

lazy: 可以使输入框在 失去焦点 或 按回车键 之后再更新。
<div id="app">
  <input type="text" v-model.lazy="text">  
  -- {{ text }}
</div>

var app = new Vue({
  el: '#app',
  data: {
    text: '红豆生南国'
  }
})

可以看到,input 输入新的内容后,后面的文本没有实时更新。只有在 input 失去焦点,或按下回车键时,后面的文本才会更新。

number 修饰符:将输入的 string 类型转换成 number 类型。
<div id="app">
  <input type="text" v-model.number="text"> 
  -- {{ typeof text }}  
</div>

var app = new Vue({
  el: '#app',
  data: {
    text: ''
  }
})

输入文字的内容,是字符串类型。

使用number 修饰符后,就会自动将用户输入的内容转换成 number 类型。

trim :自动过滤首尾空格。
<div id="app">
  没有使用 trim :<input type="text" v-model="text1">
  -- {{ text1.length }}
<br>
  
  使用了 trim :<input type="text" v-model.trim="text2">  
// v-model 指令后,使用 trim 修饰符
  -- {{ text2.length }}  // 输出字符长度
</div>

var app = new Vue({
  el: '#app',
  data: {
    text1: '',
    text2: ''
  }
})

默认都是空字符串,length 都为 0 。

在 input 中输入 十个空格和一些字符再输入十个空格,看看 length 将如何变化。



可以看到,没有使用 trim 的 input,length 属性会将空格也算进去。使用了 trim 的 input,length 属性没有将首尾的空格计算进去,因为首尾空格将会在 input 失去焦点时被去除。

相关文章

  • 深入理解vue 修饰符sync【 vue sync修饰符示例】

    在说vue 修饰符sync前,我们先看下官方文档:vue .sync 修饰符,里面说vue .sync 修饰符以前...

  • 2018-10-11

    vue 修饰符sync【 vue sync修饰符示例】 先看下一个参考的文章:深入理解vue 修饰符sync【 v...

  • Vue事件修饰符

    Vue 事件修饰符 事件修饰符结合使用

  • vue中的修饰符

    事件修饰符 使用vue,让代码中只有纯粹的数据逻辑,而不是去处理DOM事件细节。 ---事件修饰符vue事件修饰符...

  • 2020-12-29

    Vue修饰符和事件 Vue修饰符:用来修饰事件的操作例如: 代码举例:阻止默认动作 1、v-on和其他支持的修饰符...

  • Vue面试考点准备03

    1、Vue中的修饰符有哪些? 修饰符是用于限定类型以及类型成员的声明的一种符号。Vue中修饰符分为如下五种:表单修...

  • Vue事件修饰符详解

    Vue事件修饰符详解(转) 整体学习Vue时看到Vue文档中有事件修饰符的描述,但是看了之后并没有理解是什么意思,...

  • 在vue中使用.stop阻止单击事件继续传播

    一、vue的事件修饰符 为了不在方法中处理DOM事件细节,vue中提供6个事件修饰符。分别是: .stop .pr...

  • 31.Vue v-model 修饰符

    与 Vue事件修饰符 类似,v-model也有修饰符,用于控制数据同步。 案例

  • Vue-day3

    Vue常用指令 修饰符 表单修饰符 v-model.lazy:change事件,失去焦点才改变.number ①限...

网友评论

      本文标题:Vue 修饰符

      本文链接:https://www.haomeiwen.com/subject/pdtqkctx.html