vue指令大全

2023-11-06

vue 是什么——简介型的javascript框架

特点:mvvm m=mvc module 模型 v=view 视图 c=controller 控制器
mvvm m=mvc module 模型 v=view 视图 vm (视图与数据之间的传递)
vue1 双向数据绑定 vue2 单向数据流 单页面应用

一、 vue 的指令

v-model   数据绑定
data  返回对象用 return
v-for   循环   格式  v-for="字段名 in(of) 数组json"
v-show   显示 隐藏     传递的值为布尔值  true  false  默认为false
v-if   显示与隐藏     和v-show对比的区别 就是是否删除dom节点   默认值为false
v-else-if  必须和v-if连用
v-else  必须和v-if连用  不能单独使用  否则报错   模板编译错误
v-bind  动态绑定  作用: 及时对页面的数据进行更改
v-on 绑定事件  函数必须写在methods里面
 @click  快捷方法
v-text  解析文本
v-html   解析html标签
v-bind:class   三种绑定方法  1、对象型  '{red:isred}'  2、三目型   'isred?"red":"blue"'   3、数组型  '[{red:"isred"},{blue:"isblue"}]'
v-once  进入页面时  只渲染一次 不在进行渲染
v-cloak  防止闪烁
v-pre  把标签内部的元素原位输出

二、用法

1. v-text

v-text主要用来更新textContent,可以等同于JS的text属性。
<span v-text="msg"></span>

这两者等价:
<span>{{msg}}</span>

2. v-html

双大括号的方式会将数据解释为纯文本,而非HTML。为了输出真正的HTML,可以用v-html指令。它等同于JS的innerHtml属性。
<div v-html="rawHtml"></div>
这个div的内容将会替换成属性值rawHtml,直接作为HTML进行渲染。

3. v-pre

v-pre主要用来跳过这个元素和它的子元素编译过程。可以用来显示原始的Mustache标签。跳过大量没有指令的节点加快编译。
<div id="app">
    <span v-pre>{{message}}</span>  //这条语句不进行编译
    <span>{{message}}</span>
</div>
最终仅显示第二个span的内容

4. v-cloak

这个指令是用来保持在元素上直到关联实例结束时进行编译。
<div id="app" v-cloak>
    <div>
        {{message}}
    </div>
</div>
<script type="text/javascript">
    new Vue({
      el:'#app',
      data:{
        message:'hello world'
      }
    })
</script>
在页面加载时会闪烁,先显示:
<div>
    {{message}}
</div>

然后才会编译为:
<div>
    hello world!
</div>

5. v-once

v-once关联的实例,只会渲染一次。之后的重新渲染,实例极其所有的子节点将被视为静态内容跳过,这可以用于优化更新性能。
<span v-once>This will never change:{{msg}}</span>  //单个元素
<div v-once>//有子元素
    <h1>comment</h1>
    <p>{{msg}}</p>
</div>
<my-component v-once:comment="msg"></my-component>  //组件
<ul>
    <li v-for="i in list">{{i}}</li>
</ul>
上面的例子中,msg,list即使产生改变,也不会重新渲染。

6. v-if

v-if可以实现条件渲染,Vue会根据表达式的值的真假条件来渲染元素。
<a v-if="ok">yes</a>
如果属性值ok为true,则显示。否则,不会渲染这个元素。

7. v-else

v-else是搭配v-if使用的,它必须紧跟在v-if或者v-else-if后面,否则不起作用。
<a v-if="ok">yes</a>
<a v-else>No</a>

8. v-else-if

v-else-if充当v-if的else-if块,可以链式的使用多次。可以更加方便的实现switch语句。
<div v-if="type==='A'">
    A
</div>
<div v-if="type==='B'">
    B
</div>
<div v-if="type==='C'">
    C
</div>
<div v-else>
    Not A,B,C
</div>

9. v-show

<h1 v-show="ok">hello world</h1>

也是用于根据条件展示元素。和v-if不同的是,如果v-if的值是false,则这个元素被销毁,不在dom中。但是v-show的元素会始终被渲染并保存在dom中,它只是简单的切换css的dispaly属性。

注意:v-if有更高的切换开销
v-show有更高的初始渲染开销。
因此,如果要非常频繁的切换,则使用v-show较好;如果在运行时条件不太可能改变,则v-if较好

10. v-for

用v-for指令根据遍历数组来进行渲染
有下面两种遍历形式
<div v-for="(item,index) in items"></div>   //使用in,index是一个可选参数,表示当前项的索引
<div v-for="item of items"></div>   //使用of

下面是一个例子,并且在v-for中,拥有对父作用域属性的完全访问权限。
<ul id="app">
    <li v-for="item in items">
        {{parent}}-{{item.text}}
    </li>
</ul>
<script type="text/javascript">
    var example = new Vue({
      el:'#app',
      data:{
        parent:'父作用域'
        items:[
          {text:'文本1'},
          {text:'文本2'}
        ]
      }
    })
</script>

会被渲染为:
<ul id="app">
    <li>父作用域-文本1</li>
    <li>父作用域-文本2</li>
</ul>
注意:当v-for和v-if同处于一个节点时,v-for的优先级比v-if更高。这意味着v-if将运行在每个v-for循环中

11. v-bind

v-bind用来动态的绑定一个或者多个特性。没有参数时,可以绑定到一个包含键值对的对象。常用于动态绑定class和style。以及href等。
简写为一个冒号【  :】
<1>对象语法:
//进行类切换的例子
<div id="app">
    <!--当data里面定义的isActive等于true时,is-active这个类才会被添加起作用-->
    <!--当data里面定义的hasError等于true时,text-danger这个类才会被添加起作用-->
    <div :class="{'is-active':isActive, 'text-danger':hasError}"></div>
</div>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            isActive: true,  
            hasError: false
        }
    })
</script>

渲染结果:
<!--因为hasError: false,所以text-danger不被渲染-->
<div class = "is-active"></div>

<2>数组语法
<div id="app">
    <!--数组语法:errorClass在data对应的类一定会添加-->
    <!--is-active是对象语法,根据activeClass对应的取值决定是否添加-->
    <p :class="[{'is-active':activeClass},errorClass]">12345</p>
</div>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            activeClass: false,
            errorClass: 'text-danger'
        }
    })
</script>

渲染结果:
<!--因为activeClass: false,所以is-active不被渲染-->
<p class = "text-danger"></p>

<3>直接绑定数据对象
<div id="app">
    <!--在vue实例的data中定义了classObject对象,这个对象里面是所有类名及其真值-->
    <!--当里面的类的值是true时会被渲染-->
    <div :class="classObject">12345</div>
</div>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            classObject:{
                'is-active': false,
                'text-danger':true
            }           
        }
    })
</script>

渲染结果:
<!--因为'is-active': false,所以is-active不被渲染-->
<div class = "text-danger"></div>

12. v-model

这个指令用于在表单上创建双向数据绑定。
v-model会忽略所有表单元素的value、checked、selected特性的初始值。因为它选择Vue实例数据做为具体的值。
<div id="app">
    <input v-model="somebody">
    <p>hello {{somebody}}</p>
</div>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            somebody:'小明'
        }
    })
</script>

这个例子中直接在浏览器input中输入别的名字,下面的p的内容会直接跟着变。这就是双向数据绑定。
v-model修饰符
<1>  .lazy
默认情况下,v-model同步输入框的值和数据。可以通过这个修饰符,转变为在change事件再同步。
<input v-model.lazy="msg">

<2>  .number
自动将用户的输入值转化为数值类型
<input v-model.number="msg">

<3>  .trim
自动过滤用户输入的首尾空格
<input v-model.trim="msg">

13. v-on

v-on主要用来监听dom事件,以便执行一些代码块。表达式可以是一个方法名。
简写为:【  @  】
<div id="app">
    <button @click="consoleLog"></button>
</div>
<script>
    var app = new Vue({
        el: '#app',
        methods:{
            consoleLog:function (event) {
                console.log(1)
            }
        }
    })
</script>

事件修饰符


.stop  阻止事件继续传播

.prevent 事件不再重载页面

.capture 使用事件捕获模式,即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理

.self 只当在 event.target 是当前元素自身时触发处理函数

.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>

<!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a>

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成  -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div v-on:scroll.passive="onScroll">...</div>

使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用v-on:click.prevent.self会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。



作者:yichen_china
链接:https://www.jianshu.com/p/7dbc737f88a8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue指令大全 的相关文章

随机推荐

  • Android 内存泄露分析

    1 内存泄漏简介 内存泄漏是指内存空间使用完毕后无法被释放的现象 尽管Java有垃圾回收机制 GC 但是对于还保持着引用 逻辑上却已经不会再用到的对象 垃圾回收器不会回收它们 内存泄漏带来的危害 用户对单次的内存泄漏并没有什么感知 但当可用
  • 智能优化算法-战争策略算法War Strategy Optimization Algorithm(附Matlab代码)

    引言 战争策略算法War Strategy Optimization Algorithm是基于军队在战争中的战略运动 将战争策略建模为一个优化过程 每个士兵都动态地向最优值移动 该算法对两种流行的战争策略 进攻和防御策略进行建模 士兵在战场
  • VBA技术资料MF54:VBA_EXCEL实时获取鼠标位置

    分享成果 随喜正能量 若人散乱心 乃至以一花 供养于画像 渐见无数佛 所以发一幅释迦牟尼佛像 与同修善友一起每日在微博上供养 只要有供养之心 便可积累功德 以此回向 愿求者如愿苦者得乐 愿这世界吉祥安乐 愿每颗心充满善念 我给VBA的定义
  • 0.96寸OLED12864显示屏设计方案(原理图+PCB+BOM表+程序)

    一 简介 OLED 屏幕作为一种新型的显示技术 其自身可以发光 亮度 对比度高 功耗低 在当下备受追捧 而在我们正常的显示调整参数过程中 我们越来越多的使用这种屏幕 我们使用的一般是分辨率为 128 64 屏幕尺寸为 0 96 寸 由于其较
  • Python包中__init__.py文件的作用和用法

    在Python工程中 我们经常可以看到带有 init py 文件的目录 在PyCharm中 带有这个文件的目录被认为是Python的包目录 与目录的图标有不一样的显示 如下图所示 链接 dir example是一个空白目录 图标是个文件夹图
  • R.I.P,又一位程序员巨佬——左耳朵耗子陨落

    震惊 谣言吧 求辟谣 默哀 左耳朵耗子 在程序员这个群体里应该属于 GOAT 的存在了 虽然每个人心目中都有自己的 GOAT 但耗子叔的影响力可以说是有目共睹 我也是在技术群刷到这张图片的 相信大多数小伙伴和我一样 震惊 谣言吧 求辟谣 默
  • 用C#语言泛化单件模式

    用C 语言泛化单件模式 本人对于C 只能算是初学者 写此随笔 也只为和大家一起讨论 共同进步 我看到过一些用C 语言泛化单件 Singleton 的文章和代码 里面有个问题 即用new来创建对象 比如类似下面这段代码 if instance
  • 串口接受时有关接受标志位详解

    首先我们来看一下MDK对各位的描述 可以发现0 13位接受的是数据个数 填满相当于十进制的8191 那么既然0 13位数据量这么大 代码是如何实现对14 15位的修改呢 废话不多说 先上实现代码 原子哥编写 void USART1 IRQH
  • 简单的redis集群

    条件 3台主机 也可以1台3实例 redis大版本 5 3 4不太一样 下载安装 提前装好gcc wget http download redis io releases redis 5 0 3 tar gz tar redis 5 0 3
  • Linux 多进程模块化设计 - 主进程守护子进程

    Linux 多进程模块化设计 主进程守护子进程 1 Linux多进程 2 示例 3 总结 1 Linux多进程 fork pid t fork void 复制调用进程 并创建为子进程 wait pid t wait int status 等
  • Java压缩工具(zip)

    压缩包使用说明 public class ZipFileUtils web下载打成压缩包的文件 流方式 param response 响应 param fileList 文件列表 param zipName 压缩包名 public stat
  • python 常用函数和自定义函数整理

    以下函数主要用于记录和保存 方便自己查阅 持续更新 1 3D 图像处理 def numpy2sitk arr sitk ori img numpy转换为sitk sitk img sitk GetImageFromArray arr sit
  • 【MES】MES能为制造企业做什么,解决什么问题?

    导 读 文 e works整理
  • 看完这篇 教你玩转渗透测试靶机vulnhub——FunBox7( EASYENUM)

    Vulnhub靶机FunBox7 EASYENUM 渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 文件上传GetShell sudo mysql 提权 获取fla
  • 原始字符串(Raw String)

    来自 Python宝典 的笔记 1 原始字符串是Python中一类比较特殊的字符串 以大写字母R或者小写字母r开始 在原始字符串中 字符 不再表示转义字符的含义 2 原始字符串是为正则表达式设计的 也可以用来方便地表示Windows系统下的
  • SpringBoot JPA提示:Cannot add or update a child row: a foreign key constraint fails/MySQL :1452 添加外键失败

    问题描述 一个简单的Spring Data JPA应用程序 包含一个树形结构类对象Permission 测试树形结构类型父子关系时 提示如下错误信息 ERROR Cannot add or update a child row a fore
  • idea运行java程序报:java: 错误: 不支持发行版本 5解决

    进入设置 修改编译字节码版本 进入项目结构 修改语言类别 改为你自己对应的jdk版本
  • [USACO18FEB]Snow Boots G【set】

    题目链接 P4269 USACO18FEB Snow Boots G 我们可以按照离线的方式 先进行离散化 然后再看当每个高度的最少需要的距离由此判断答案的可行性 于是可以用两个set 其中一个得是multi 来进行维护 一个维护点坐标 这
  • element-ui的el-form表单一行两个显示效果

    效果图 代码
  • vue指令大全

    vue 是什么 简介型的javascript框架 特点 mvvm m mvc module 模型 v view 视图 c controller 控制器 mvvm m mvc module 模型 v view 视图 vm 视图与数据之间的传递