Vue中的指令

news2024/10/5 12:48:29

指令

指令 (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.coloradmin.cn/o/974648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

旅游攻略APP外包开发功能

旅游攻略APP是帮助旅行者计划和享受旅行的工具&#xff0c;下面列出了一些常见的旅游攻略APP功能&#xff0c;以及在上线这类应用时需要注意的问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 常见…

6517B|吉时利keithley 6517B高阻表

181/2461/8938Keithley 6517B 静电计 / 高阻表是全球科研实验室灵敏测量的标准。吉时利在弱电测量方面拥有 60 多年的专业经验&#xff0c;吉时利静电计能够可靠地测量最低 10 aA (1010-18A) 电流、最低 1 fC 电荷&#xff0c;并支持最高 1018Ω 的电阻测量。6517B 还能够测量高…

自动化驱动程序管理

在部署操作系统时&#xff0c;每次都从下载和分发所需的驱动程序中实现真正的独立性可能是一场艰苦的战斗。特别是具有硬件多样化的环境&#xff0c;并且需要支持新的硬件类型时。借助 OS Deployer&#xff0c;可以对所有端点使用一个映像&#xff0c;无论品牌和型号如何&#…

Java版本工程行业管理系统源码-专业的工程管理软件

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示1…

机器学习算法详解1:基础知识合集

机器学习算法详解1&#xff1a;基础知识合集 前言 ​ 本系列主要对机器学习上算法的原理进行解读&#xff0c;给大家分享一下我的观点和总结。 本篇前言 ​ 开一个新系列&#xff0c;另外现在开学了&#xff0c;忙起来了&#xff0c;所以更新会很慢。 目录结构 文章目录 机器学…

SI24R1/NRF24L01P引脚及软硬件中文开发资料

NRF24L01P芯片兼容通信。从而被打上了国产NRF24L01P的标签&#xff0c;更有甚者居然磨掉芯片原本的SI24R1的LOGO打成NRF24L01P&#xff0c;给很多客户产生了很多不必要的损失。大家定向的理解&#xff0c;国产的东西总是会比国外进口的相差到哪里哪里&#xff0c;如此云云。其实…

冠达管理:融创中国获纳入港股通标的,股价涨幅超20%

到发稿&#xff0c;港股融创我国股价报1.53港元&#xff0c;涨21.43%。 9月5日&#xff0c;港股融创我国高开&#xff0c;到发稿&#xff0c;股价报1.53港元&#xff0c;涨21.43%。 ​ 消息面上&#xff0c;根据上交所、深交所公告&#xff0c;港通下港股通标的名单发生调整…

电商为什么要做小程序商城?

微信小程序出现之后&#xff0c;便迅速在网络上走红&#xff0c;并且开放很多接口&#xff0c;最重要的是&#xff0c;微信小程序可以和公众号密切关联消息&#xff0c;这样给企业带来了更多商机。特别是微信小程序商城得到了微信平台的大力扶持&#xff0c;这样一来&#xff0…

企业做微信小程序开发的好处

一、引言 在移动优先的时代&#xff0c;微信小程序为企业提供了新的营销方式和用户交互方式。微信小程序具有轻便、易用、可跨平台等特性&#xff0c;使得企业可以快速触达广大用户。本文将详细探讨企业做微信小程序开发的好处。 二、微信小程序对企业的好处 增加品牌知名度&…

mysql 大表如何ddl

大家好&#xff0c;我是蓝胖子&#xff0c;mysql对大表(千万级数据)的ddl语句&#xff0c;在生产上执行时一定要千万小心&#xff0c;一不小心就有可能造成业务阻塞&#xff0c;数据库io和cpu飙高的情况。今天我们就来看看如何针对大表执行ddl语句。 通过这篇文章&#xff0c;…

射频功率放大器的指标有哪些内容

射频功率放大器是射频系统中至关重要的组件&#xff0c;用于放大射频信号的功率。本文将详细介绍射频功率放大器的指标&#xff0c;包括功率增益、带宽、线性度、效率、稳定性等关键指标。 一、功率增益 功率增益是射频功率放大器最基本的指标之一&#xff0c;表示放大器将输入…

FaceChain应用生态爆发?无限可能的人物应用等你加入探索!

1 核心功能进展 在过去的不到一个月&#xff0c;FaceChain开源项目从无到有&#xff0c;成功突破了相关技术瓶颈&#xff0c;GitHub&#xff08;GitHub - modelscope/facechain: FaceChain is a deep-learning toolchain for generating your Digital-Twin.&#xff09;获得了…

松下GF9使用心得

文章目录 规格参数关键特征USB接口充电功能旋转显示屏WiFi直连4K拍摄和后对焦模式 快速指南机身按键及功能拍摄模式屏显信息拍摄时回放时 菜单列表拍摄菜单动态影像菜单自定义菜单设置菜单回放菜单 核心功能拍摄模式智能自动模式程序 AE 模式、光圈优先 AE 模式、快门优先 AE 模…

恒运资本:股市涨跌如何预测?如何避免股价的泡沫?

股市的涨跌受到多种要素影响&#xff0c;其直接关系到投资者的收益。那么股市涨跌怎么猜测&#xff1f;怎么防止股价的泡沫&#xff1f;恒运资本也为我们准备了相关内容&#xff0c;以供参阅。 股市涨跌怎么猜测&#xff1f; 股市涨跌具有不确定性&#xff0c;没有方法能够确保…

vue基于Echarts、百度地图MapVGL实现可视化大屏数据展示

一、布局 常见的大屏数据展示布局&#xff0c;一般会将地图作为整个屏幕的背景&#xff0c;在地图上以九宫格布局展示各类数据图表。实现这一效果可以使地图的z-index1,在地图上的图表等z-index>1,下面会详细描述这种设计该如何实现&#xff1a; <div style"width…

如何通过构建遥感光谱反射信号与地表参数之间的关系模型来准确估算植被参数?植被参数光学遥感反演方法(Python)及遥感与生态模型数据同化算法

目录 专题一 植被参数遥感反演理论 专题二 植被叶片及冠层反射率模拟与处理 专题三 植被遥感模型参数敏感性分析 专题四 基于查找表(LUT)方法反演植被参数 专题五 基于优化算法反演植被参数 专题六 基于机器学习反演植被参数 专题七 遥感数据同化理论 专题八 同化遥感反…

浅谈一下酒吧和酒馆的不同

相信有很多朋友还不怎么清楚酒吧和酒馆的区别是什么&#xff0c;这里为大家简单介绍一下两者的不同&#xff0c;个人见解&#xff0c;如有错漏&#xff0c;欢迎指出。一、首先是他们的经营范围不同酒馆经营通常包含酒水和餐饮&#xff0c;适合朋友聚会或者是和商业伙伴聊天。而…

/etc/ssh/sshd_config 配置文件中的 PasswordAuthentication PermitRootLogin 参数作用

1、PasswordAuthentication PasswordAuthentications是一种身份验证方式&#xff0c;通常用于远程服务器的登录。当用户连接到远程服务器并进行身份验证时&#xff0c;服务器会根据 用户名进行验证&#xff0c;如果验证成功允许用户访问服务器。在SSH中&#xff0c;PasswordAut…

Docker容器日志和宿主机的时间问题

容器与主机的时间 我们在部署完docker之后往往会发现&#xff0c;容器的时间和主机的时间其实是对不上的&#xff0c;因为宿主机设置了时区&#xff0c;而Docker容器并没有设置&#xff0c;导致Docker容器的时间和宿主机时间不同步&#xff0c;导致两者相差8小时。我们可以进入…

常用命令之mysql命令之show命令

一、mysql show命令简介 mysql数据库中show命令是一个非常实用的命令&#xff0c;SHOW命令用于显示MySQL数据库中的信息。它可以用于显示数据库、表、列、索引和用户等各种对象的信息。我们常用的有show databases&#xff0c;show tables&#xff0c;show full processlist等&…