Vue2常用指令

news/2025/2/10 21:07:22/

一、指令基础概念

在 Vue2 里,指令是带有 v- 前缀的特殊属性。它的主要作用是当表达式的值发生变化时,会相应地将某些特殊的行为应用到 DOM 上。简单来说,指令就是 Vue 提供的一种便捷语法,让我们可以更轻松地操作 DOM 和实现业务逻辑。

二、常见指令详解

1. v-bind

  • 功能v-bind 指令用于动态绑定 HTML 属性。我们可以根据数据的变化来动态更新元素的属性值。
  • 示例代码
<template><img v-bind:src="imageUrl" alt="示例图片">
</template><script>
export default {data() {return {imageUrl: 'https://example.com/image.jpg'};}
};
</script>
  • 代码解释:在这个例子中,v-bind:srcimageUrl 变量的值动态绑定到 img 元素的 src 属性上。当 imageUrl 的值发生变化时,图片的来源也会相应改变。
  • 缩写v-bind 可以缩写为 :,上述代码可以简化为 <img :src="imageUrl" alt="示例图片">

2. v-on

  • 功能v-on 指令用于监听 DOM 事件,比如点击事件、输入事件等。当事件触发时,会执行相应的 JavaScript 代码。
  • 示例代码
<template><button v-on:click="handleClick">点击我</button>
</template><script>
export default {methods: {handleClick() {alert('按钮被点击了!');}}
};
</script>
  • 代码解释v-on:click 监听按钮的点击事件,当按钮被点击时,会调用 handleClick 方法,弹出一个提示框。
  • 缩写v-on 可以缩写为 @,上述代码可写成 <button @click="handleClick">点击我</button>

3. v-model

  • 功能v-model 指令主要用于在表单元素上创建双向数据绑定。也就是说,数据的变化会自动更新到视图,视图的变化也会自动更新到数据。
  • 示例代码
<template><input v-model="message" type="text"><p>输入的内容是: {{ message }}</p>
</template><script>
export default {data() {return {message: ''};}
};
</script>
  • 代码解释:在这个例子中,v-modelmessage 变量和输入框进行了双向绑定。当用户在输入框中输入内容时,message 的值会自动更新;反之,当 message 的值在代码中被修改时,输入框中的内容也会相应改变。

4. v-ifv-show

  • 功能:这两个指令都用于控制元素的显示与隐藏,但实现方式有所不同。v-if 是通过动态插入或移除 DOM 元素来控制显示与隐藏,而 v-show 是通过修改元素的 display 属性来实现。
  • 示例代码
<template><div><p v-if="isVisible">这是通过 v-if 控制显示的内容</p><p v-show="isVisible">这是通过 v-show 控制显示的内容</p><button @click="toggleVisibility">切换显示状态</button></div>
</template><script>
export default {data() {return {isVisible: true};},methods: {toggleVisibility() {this.isVisible =!this.isVisible;}}
};
</script>
  • 代码解释:点击按钮时,会调用 toggleVisibility 方法,切换 isVisible 的值。当 isVisibletrue 时,两个段落都会显示;当 isVisiblefalse 时,v-if 控制的段落会从 DOM 中移除,而 v-show 控制的段落只是将 display 属性设置为 none

5. v-for

  • 功能v-for 指令用于遍历数组或对象,根据数据的数量动态渲染多个元素。
  • 示例代码
<template><ul><li v-for="item in items" :key="item.id">{{ item.name }}</li></ul>
</template><script>
export default {data() {return {items: [{ id: 1, name: '苹果' },{ id: 2, name: '香蕉' },{ id: 3, name: '橙子' }]};}
};
</script>
  • 代码解释v-for 指令遍历 items 数组,为数组中的每个元素渲染一个 li 元素。:key 是一个重要的属性,它用于给每个元素提供一个唯一的标识,帮助 Vue 更高效地更新 DOM。

三、指令修饰符

Vue2 还提供了指令修饰符,用于改变指令的默认行为。

1. v-on 修饰符

  • .stop:阻止事件冒泡,即阻止事件向上级 DOM 元素传播。
<template><div @click="outerClick"><button @click.stop="innerClick">点击我</button></div>
</template><script>
export default {methods: {outerClick() {console.log('外层元素被点击');},innerClick() {console.log('按钮被点击');}}
};
</script>
  • .prevent:阻止事件的默认行为,比如表单提交时阻止页面刷新。
<template><form @submit.prevent="submitForm"><input type="text" v-model="message"><button type="submit">提交</button></form>
</template><script>
export default {data() {return {message: ''};},methods: {submitForm() {console.log('表单提交,数据为:', this.message);}}
};
</script>

2. v-model 修饰符

  • .lazy:将 v-model 的更新时机从 input 事件改为 change 事件,即只有在输入框失去焦点或按下回车键时才更新数据。
<template><div><input v-model.lazy="message"><p>输入的值:{{ message }}</p></div>
</template><script>
export default {data() {return {message: ''};}
};
</script>
  • .number:将输入的值自动转换为数字类型。
<template><div><input v-model.number="age" type="number"><p>年龄:{{ typeof age }}, 值:{{ age }}</p></div>
</template><script>
export default {data() {return {age: 0};}
};
</script>


http://www.ppmy.cn/news/1570958.html

相关文章

【翻译+论文阅读】DeepSeek-R1评测:粉碎GPT-4和Claude 3.5的开源AI革命

目录 一、DeepSeek-R1 势不可挡二、DeepSeek-R1 卓越之处三、DeepSeek-R1 创新设计四、DeepSeek-R1 进化之路1. 强化学习RL代替监督微调学习SFL2. Aha Moment “啊哈”时刻3. 蒸馏版本仅采用SFT4. 未来研究计划 部分内容有拓展&#xff0c;部分内容有删除&#xff0c;与原文会有…

Unity3D开发之2019.4.5f1版本IPointerClickHandler Bug

实际代码测试ui物体挂载的脚本里&#xff1a; 如果实现IPointerDownHandler和IPointerClickHandler接口&#xff0c;则会触发OnPointerClick和OnPointerDown函数调用。如果只实现IPointerClickHandler接口&#xff0c;则不会触发OnPointerClick函数调用。如果只实现IPointerDo…

Spring Boot中使用MockMvc测试PATCH请求控制器

在Spring Boot项目中&#xff0c;对控制器进行单元测试是确保代码质量和功能正确性的重要环节。本文将通过一个具体的例子&#xff0c;展示如何使用Spring的MockMvc框架来测试处理PATCH请求的控制器。 示例项目结构 假设我们有一个简单的Spring Boot项目&#xff0c;其中包含一…

采用gitlab的package registry 方式 通过api 上传发布包,解决git命令拉取大文件异常退出问题

一、gitlab的package registry&#xff0c;解决git命令拉取大文件异常退出问题&#xff0c;上传文件命令可以按照&#xff1a; 1# 88-gongyin_publish群组下项目publish_file的ID【固定】 2# sit -定义哪个环境的介质 如集成测试环境 or 生产 prod【流水线入参】 3#20250205-定…

【python】简单的flask做页面。一组字母组成的所有单词。这里的输入是一组字母,而输出是所有可能得字母组成的单词列表

目录结构如下&#xff1a; https://github.com/kaede316/Pythons_pj.git 效果&#xff1a; 后续可扩展为工具网站&#xff1a; 更新 2025.02.09 1、增加等间距制作人 时间信息 2、增加判断润年的功能

Linux网络编程6——UDP通信

一.UDP通信 1.TCP通信和UDP通信各自的优缺点 TCP&#xff1a; 面向连接的&#xff0c;可靠数据包传输。对于不稳定的网络层&#xff0c;采取完全弥补的通信方式。 丢包重传。​ 优点&#xff1a; ​ 稳定。 ​ 数据流量稳定、速度稳定、顺序 ​ 缺点&#xff1a; ​ 传…

stm32电机驱动模块

电机驱动模块是智能车等电子设备中用于驱动电机运转的重要部件&#xff0c;它能将微控制器输出的控制信号转换为足够的功率和电流来驱动电机。以下为你详细介绍电机驱动模块的相关信息&#xff1a; 常见类型 1. L298N 电机驱动模块 特点 高电压、大电流驱动能力&#xff1a;能…

Dart语言的云计算

Dart语言在云计算中的应用 引言 云计算作为一种新兴的计算模式&#xff0c;为各行各业带来了重大变革。借助于云计算&#xff0c;用户可以通过互联网获取和使用各种资源&#xff0c;如计算能力、存储、数据库等。随着云计算的快速发展&#xff0c;编程语言的选择变得愈发重要…