Vue中的指令

指令

指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

常用指令预期简短介绍
v-showany显示隐藏元素,通过 display: none 的方式。
v-ifany显示隐藏元素,元素中不会渲染在 dom 中。
v-forArray | Object | number | string | Iterable主要遍历对象或数组,并返回当前项和索引。
v-onFunction绑定事件监听器
v-bindany动态绑定属性
v-modelany在表单控件或者组件上创建双向绑定

v-show

主要作用是显示隐藏元素,通过 display: none 的方式。当表达式成立时,不做任何处理,但是表达式不成立时,则会给元素添加 display: none 属性。

<template><div class="home"><span v-show="age > 100">Hello World</span></div>
</template><script>
export default {data() {return {age: 80}}
}
</script>

在这里插入图片描述

v-if

主要作用是显示隐藏元素,和 v-show 类似,但是 v-if 在条件不成立时,不会在 DOM 中渲染该元素。

<template><div class="home"><span v-if="age > 100">Hello World</span></div>
</template><script>
export default {data() {return {age: 80}}
}
</script>

在这里插入图片描述

v-for

主要遍历对象或数组,并返回当前项和索引,当然也可以遍历数字以及字符串。使用 v-for 的时候必须要把 key 属性带上,并且 key 是作为唯一值。其中 item 代表每一项的值,index 代表每一项的索引值,这两者都是可以自定义命名的。in list 代表需要遍历的变量名称。

遍历一维数组

<template><div class="home"><div v-for="(item, index) in list" :key="index">{{ item }} -- {{ index }}</div></div>
</template><script>
export default {data() {return {list: ['xiaoming', 'xiaohong', 'libai']}}
}
</script>
xiaoming -- 0
xiaohong -- 1
libai -- 2

遍历对象数组

<template><div class="home"><div v-for="(item, index) in list" :key="index">{{ item.name }} -- {{ item.age }}</div></div>
</template><script>
export default {data() {return {list: [{name: 'xiaoming',age: 18},{name: 'xiaohong',age: 20},{name: 'libai',age: 22}]}}
}
</script>
xiaoming -- 18
xiaohong -- 20
libai -- 22

遍历对象

<template><div class="home"><div v-for="(item, index) in obj" :key="index">{{ item }} -- {{ index }}</div></div>
</template><script>
export default {data() {return {obj: {name: 'xiaoming',age: 18,like: 'running'}}}
}
</script>
xiaoming -- name
18 -- age
running -- like

v-on

绑定事件监听器。在绑定的时候我们需要注意绑定的对象是原生 DOM 元素还是 Vue 的自定义组件。如果是原生 DOM 元素则会触发 DOM 事件,如果是自定义组件则会触发组件内 emit 事件。v-on 的缩写是 @ 这个比较常用。

原生 DOM 元素事件

dom 原生事件有很多,但是都是固定的名称,不能够自定义。例如 click input change 事件等等。

<template><div class="home"><button @click="handleClick">提交</button></div>
</template><script>
export default {methods: {handleClick() {alert('我被点击了')}}
}
</script>

Vue 自定义组件

当子组件内部调用 emit("event1") 时,则 handleClick 就会被触发。这里的 @ 事件名是可以自定义的。

index.vue 父组件

<template><div class="home"><my-child-components @event1="handleClick"></my-child-components></div>
</template><script>
import MyChildComponents from './my-child-components.vue'export default {components: { MyChildComponents },methods: {handleClick() {console.log('我被触发了')}}
}
</script>

my-child-components 子组件

<template><div class="my-child-components"><button @click="handleClick">点我</button></div>
</template><script>
export default {methods: {handleClick() {this.$emit('event1')}}
}
</script>

v-bind

动态绑定属性,通常我们给一个 dom 元素添加属性时,基本上都是固定不变的,所以能通过 v-bind 可以变为动态的,使得开发更加便捷。v-bindv-on 一样也是有缩写的,v-bind 的缩写是英文的冒号 : 这个也是比较常用的。当我们绑定属性时,无论是静态还是动态,有一个地方需要注意,就是你绑定的元素是原生 DOM 元素,还是 Vue 的自定义组件。如果是原生的 DOM 元素则没有什么影响,但是如果是 Vue 的自定义属性,则是可以在其组件内部通过 props 接收传入的属性哦。如果子组件中没有通过 props 接收父组件传入的动态属性,则会作用到子组件的根原生 DOM 元素上。

Vue 自定义组件

index.vue 父组件

<template><div class="home"><my-child-components :list="list"></my-child-components></div>
</template><script>
import MyChildComponents from './my-child-components.vue'export default {components: { MyChildComponents },data() {return {list: ['xiaoming', 'xiaohong', 'libai']}}
}
</script>

my-child-components 子组件

<template><div class="my-child-components">{{ list }}</div>
</template><script>
export default {props: ['list']
}
</script>

在这里插入图片描述


原生 DOM 元素动态属性

<template><div class="home"><div :name="name">内容1</div><div :class="[age > 100 ? 'big-age' : 'small-age']">内容2</div><div :style="{ width: width }">内容2</div></div>
</template><script>
export default {data() {return {age: 80,name: 'xiaoming',width: '100px'}}
}
</script>

在这里插入图片描述

v-model

一般都是在原生 DOM 元素上,并且是表单元素进行使用 v-model,更高级的用法就是给 Vue 自定义组件使用 v-model 属性,当然实现起来会复杂很多。想要在自定义组件上实现 v-model,则必须先了解 v-model 的实现原理。

典型双向数据绑定例子

这个例子刚好也诠释了 MVVM 模式是什么效果。当我们修改数据层上 value 的值时,视图上的 value 也会跟着变化。当我们通过视图中的 input 修改绑定的 value 时,数据层上的 value 也会实时跟着改变。

<template><div class="home"><div>实时更新的值:{{ value }}</div><input v-model="value" type="text" /></div>
</template><script>
export default {data() {return {value: ''}}
}
</script>

原文链接:菜园前端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/103824.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html]当网站搭建、维护的时候,你会放个什么界面?

效果图&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>网站建设中</title><style>/* 基础样式 */body, html {margin: 0;padding: 0;height: 100%;font-family: Arial, sa…

如何利用客户旅程打造好的用户体验?

在当今竞争激烈的市场中&#xff0c;提供卓越的用户体验已经成为企业脱颖而出的关键因素之一。客户旅程是实现出色用户体验的有力工具之一&#xff0c;而HubSpot的客户旅程规划功能为企业提供了强大的支持&#xff0c;帮助他们更好地理解、管理和改善客户的互动过程。今天运营坛…

C++动态内存管理+模板

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; C&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大…

python回调函数之获取jenkins构建结果

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 需求背景&#xff1a; 现在用jenkins构建自动化测试&#xff08;2个job&#xff09;&#xff0c;公司现将自动化纳入到发布系统 要求每次构建成功之后&am…

pip install mysqlclient报错

安装mysqlclient时报错 先查看安装的python版本 python -V 根据版本下载下载对应的 mysqlclient 文件 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclienthttps://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 我的是3.7版本的 就下载3.7版本&#xff0c;64位系…

我的创作纪念日—谈谈我的学习经历

引言 在这段时间里&#xff0c;我创作了一系列关于Java编程的博客文章。通过这个过程&#xff0c;我不仅增加了对Java编程的理解&#xff0c;还提高了我的博客创作技能。在本文中&#xff0c;我想分享一些我在博客创作过程中学到的心得体会和经验 机缘与巧合 其实很早我就有写笔…

MySQL知识笔记——初级基础(实施工程师和DBA工作笔记)

老生长谈&#xff0c;MySQL具有开源、支持多语言、性能好、安全性高的特点&#xff0c;广受业界欢迎。 在数据爆炸式增长的年代&#xff0c;掌握一种数据库能够更好的提升自己的业务能力&#xff08;实施工程师&#xff09;。 此系列将会记录我学习和进阶SQL路上的知识&#xf…

Ubuntu系统重装nvidia gpu驱动

1. 卸载原驱动 sudo apt remove *cuda* sudo apt remove *nvidia* sudo /usr/bin/nvidia-uninstall sudo dpkg -l | grep ^rc | cut -d -f3 | sudo xargs dpkg --purge sudo rm -rf ~/.cuda-license-* sudo apt purge nvidia-cuda-toolkit sudo apt remove nvidia-driver-* s…

持续集成/技术交付全流程流水线工具的设计与落地

文章目录 持续集成/技术交付全流程流水线工具的设计与落地概述工具架构设计主要功能模块代码库Jenkins 流水线代码构建自动化测试产品部署监控报警 使用方法步骤一&#xff1a;安装 Jenkins步骤二&#xff1a;创建 Jenkins 流水线步骤三&#xff1a;配置监控报警步骤四&#xf…

计算机系统概论

1、冯诺依曼结构计算机工作原理及层次结构分析 1.1 冯诺依曼计算机的工作原理 存储系统&#xff1a;将程序存放在计算机的存储器中&#xff08;存储系统的快速构建与访问&#xff09;程序控制&#xff1a;按指令地址访问存储器并取出指令&#xff0c;经译码器依次产生指令执行…

Pod和容器设计模式

为什么需要Pod 一些应用的实现是需要多个进程配合完成的&#xff0c;由于容器实际上是一个“单进程”模型&#xff0c;如果在容器里启动多个进程会存在进程管理的难题。在Kubernetes里面&#xff0c;实际上会被定义为一个拥有四个容器的Pod。 Pod相当于进程组 Kubernetes 是…

【实训】“宅急送”订餐管理系统(程序设计综合能力实训)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 前言 大一小学期&#xff0c;我迎来了人生中的第一次实训…