美文网首页
Vue常用指令

Vue常用指令

作者: wenmingxing | 来源:发表于2020-02-04 10:01 被阅读0次

1. v-cloak

v-cloak不需要表达式,其会在Vue实例结束编译时从绑定的HTML元素上移除,常与CSS中的display:none配合使用,其目的是为了解决在未加载代码导致的闪烁现象

<html>
    <head>
        <meta charset="utf-8">
        <title>Vue-05</title>
        
        <!-- 增加v-cloak的CSS样式 -->
        <style scoped>
            [v-cloak] {
                    display:none;
                }
        </style>
    </head>
    
    <!-- v-cloak -->
    <body>
        <div id="app" v-cloak>
            {{message}}
        </div>
    
        <script src = "https://unpkg.com/vue/dist/vue.min.js"></script>
        <script>
            var app = new Vue({
                el: '#app',
                data: {
                    message: 'This is a message'
                },
            })
        </script>
    </body>
</html>  

如果不使用v-cloak ,当网速较慢、Vue.js文件还没被加载完时,在页面上会显示{{message}}的字样,直到Vue创建实例、编译模板后,DOM才会被替换,所以会出现闪动。

2. v-once

v-once 也不需要表达式,作用是定义它的元素或组件只渲染一次,包括元素或组件的所有子节点。首次渲染后,不再随数据的变化重新渲染,将被视为静态内容。

3. v-if、 v-else-if、 v-else

注意事项:通过Vue.js所提供的key属性,解决元素复用问题。

key 的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法。而使用 key 时,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。

有相同父元素的子元素必须有独特的 key。重复的 key 会造成渲染错误。

4. v-if 与 v-show

5. v-for

6. 数组更新

Vue的核心是数据与视图的双向绑定,当我们修改数组时,Vue会检测到数据变化,所以用v-for渲染的视图也会立即更新。

Vue包含了一组数组变异的方法,使用它们改变数组也会触发视图更新:

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()

此外,Vue还提供了非变异的方法,这些方法不会改变原数组,而是返回一个新数组:

  • filter()
  • concat()
  • slice()

7. 过滤与排序

当不想改变原数组,想通过一个数组的副本来做过滤或排序的显示时,可以使用计算属性来返回过滤或排序后的数组:

<!-- 过滤与排序-不改变原数组 -->
<body>
    <div id="app" v-cloak>
        <ul>
            <template v-for="book in books">
                <li>book's name: {{book.name}}</li>
                <li>book's author: {{book.author}}</li>
            </template>
        </ul>

        <ul>
            <template v-for="book in filterBooks">
                <li>book's name: {{book.name}}</li>
                <li>book's author: {{book.author}}</li>
            </template>
        </ul>

        <ul>
            <template v-for="book in sortedBooks">
                <li>book's name: {{book.name}}</li>
                <li>book's author: {{book.author}}</li>
            </template>
        </ul>
    </div>

    <script src = "https://unpkg.com/vue/dist/vue.min.js"></script>
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                books: [
                    {
                        name: 'Vue.js',
                        author: 'Liang'
                    },
                    {
                        name: 'JavaScript',
                        author: 'Douglas Crockford'
                    }
                ]
            },

            computed: {
                filterBooks: function() {
                    return this.books.filter(function(book) {
                        return book.name.match(/JavaScript/);
                    });
                },

                //todo 不知道为什么无效
                sortedBooks: function() {
                    return this.books.sort(function(a, b) {
                        return a.name.length > b.name.length;
                    });
                }
            },
        })
    </script>
</body>  
执行结果

8. 修饰符

修饰符是由点开头的指令后缀来表示的。

8.1 事件修饰符

Vue.js 为 v-on 提供了事件修饰符:

  • .stop
  • .prevent
  • .capture
  • .self
  • .once
  • .passive

各个修饰符的用途可以在使用时查阅。

<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>

<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>

<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>

<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>  

8.2 按键修饰符

在监听键盘事件时,我们经常需要检查详细的按键。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:

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

8.3 系统修饰符

可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器:

  • .ctrl
  • .alt
  • .shift
  • .meta

8.4 鼠标修饰符

  • .left
  • .right
  • .middle

参考

  1. 《Vue.js实战》

相关文章

  • vue入门6---vue基本指令、自定义指令、插件

    一、vue常用指令概览 二、vue自定义指令 注册全局指令Vue.directive('my-directive'...

  • Vue.js第二天

    指令 1.什么是指令? 2.vue中常用的指令

  • Vue基础知识介绍

    本节主要介绍Vue.js开发中的常用指令介绍,后续会持续补充 1. vue中常用的v-指令 v-text // 是...

  • vue 常用指令

    一、了解 Vue.js 1 Vue.js是什么?作者:尤雨溪Vue.js是一套用于构建用户界面的渐进式框架。V...

  • Vue常用指令:

    v-for="(value,index) in arr" 循环 遍历 v-model=""双向数据...

  • vue常用指令

    v-text:绑定内容 v-html:渲染html v-show:切换显示隐藏 v-if:条件渲染 v-else:...

  • Vue常用指令

    v-bind:将这个元素节点的特性和Vue实例的属性保持一致v-if:将其绑定到DOM结构中v-for:用于绑定数...

  • vue常用指令

    常用指令列表 v-modelv-ifv-elsev-showv-forv-bind----简写: :class="...

  • vue 常用指令

    v-text {{name}} v-html {{{html}}} v-model 123showModel v-...

  • VUE常用指令

    一、指令 v-model 双向绑定,监听用户的输入事件,更新数据 v-bind 能够及时对页面的数据进行更改 必须...

网友评论

      本文标题:Vue常用指令

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