zoukankan      html  css  js  c++  java
  • Vue的模板语法之指令1——Vue学习笔记(3)

     参考:

       1. Vue官网教程

       2. Vue官网API

    本文学习内容

    • v-cloak指令
    • v-once指令
    • v-model指令

    指令

    • 指令的本质就是自定义属性
    • 使用(v-)格式开头

    v-cloak指令

    • 解决插值表达式“闪动问题”
    • 解决原理:先隐藏,替换好值后再显示最终的值

    指令用法如下:

    1. 对v-cloak标签进行样式处理

    [v-cloak]:{
        display: none;
    }

    2. 给元素上添加v-cloak指令

    <div v-cloak>
      {{ msg }}
    </div>

    数据绑定指令

    • v-text填充纯文本
      • 相比插值表达式更简洁
    • v-html填充HTML片段
      • 存在安全问题
      • 本网站内部数据可以使用,来自第三方的数据不可用
    • v-pre填充原始数据
      • 显示原始数据,跳过编译过程(分析编译过程)

    对应以上三个指令,代码与运行结果如下图:

    v-once指令

    • 数据响应式:数据的变化导致页面的变化
    • v-once:只编译一次,显示内容之后不再具有响应式
    • v-once的应用场景:如果显示的信息后续不再修改,可使用v-once,优点是提供性能
    <!-- v-once指令 -->
    <div>{{ msg2 }}</div>
    <div v-once>{{ msg3 }}</div>

     

    v-model指令

    • 双向数据绑定:数据改变导致页面变化,页面数据改变数据也会变化,用在表单控件
    • MVVM设计思想

    指令用法:

    <!-- v-model指令 -->
    <input type="text" v-model="name"/>

    说明:

    1. name原始数据Fanny

    2. 页面在输入框中给Fanny后面添加123

    3. 从控制台可以看出,vm实例中的name数据也随之改变

    代码附录

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>指令</title>
            <!-- 开发环境版本,包含了有帮助的命令行警告 -->
            <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
            <style type="text/css">
                [v-cloak]:{
                    display: none;
                }
            </style>
        </head>
        <body>
            <div id="app">
                <!-- v-cloak指令 -->
                <div v-cloak>{{ msg }}</div>
                
                <!-- 数据绑定指令 -->
                <!-- v-text指令 -->
                <div v-text='msg'></div>
                <!-- 等价于 -->
                <div>{{ msg }}</div>
                
                <!-- v-html指令 -->
                <div v-html="msg1"></div>
                
                <!-- v-pre指令 -->
                <!-- 就想要显示div标签中的原始数据,而不是data中的数据 -->
                <div v-pre>{{ msg }}</div>
                
                <!-- v-once指令 -->
                <div>{{ msg2 }}</div>
                <div v-once>{{ msg3 }}</div>
                
                <!-- v-model指令 -->
                <input type="text" v-model="name"/>
                
            </div>
            <script type="text/javascript">
                var vm = new Vue({
                    el:'#app',
                    data:{
                        msg:'Hello Vue',
                        msg1:'<h1>Hello Vue<h1>',
                        msg2:'Hello Directies',
                        msg3:'v-once directive',
                        name:'Fanny'
                    }
                })
            </script>
        </body>
    </html>
  • 相关阅读:
    RQNOJ 117 最佳课题选择:多重背包
    RQNOJ 95 多多看DVD(加强版):01背包
    RQNOJ 624 运动鞋:dp
    RQNOJ 622 最小重量机器设计问题:dp
    bzoj 3262 陌上花开
    bzoj 3224 Tyvj 1728 普通平衡树
    bzoj 4196 软件包管理器
    luogu 3953 逛公园
    bzoj 2157 旅行
    luogu 3384 【模板】树链剖分
  • 原文地址:https://www.cnblogs.com/china-fanny/p/12373028.html
Copyright © 2011-2022 走看看