广州白云做网站的公司/百度一下手机版首页

广州白云做网站的公司,百度一下手机版首页,一个空间可以绑定几个网站,做网站数据库怎么做提示:渲染就是显示 文章目录 前言v-if 的基础用法v-elsev-else-ifv-show 和 v-if 对比自定义指令 v-hasv-if 和 v-has 结合使用场景完整示例补充说明 前言 提示:这里可以添加本文要记录的大概内容: 在 Vue2 中,可以通过 v-if 和…

提示:渲染就是显示

文章目录

  • 前言
  • v-if 的基础用法
  • v-else
  • v-else-if
  • v-show 和 v-if 对比
  • 自定义指令 v-has
  • v-if 和 v-has 结合使用场景
    • 完整示例
    • 补充说明


前言

提示:这里可以添加本文要记录的大概内容:

在 Vue2 中,可以通过 v-if 和自定义指令(如 v-has)实现灵活的条件渲染。以下是具体实现和示例:

v-if 的优先级高于 v-has,因此 v-if 的条件必须先成立,v-has 才会生效。

v-if 的基础用法

v-if 根据表达式的布尔值决定是否渲染元素。若表达式为 false,元素会被完全移除 DOM。适合用于不频繁切换显示状态的场景,如果条件频繁变化,建议改用 v-show,因为 v-show 只是通过 CSS 控制显示/隐藏,避免频繁操作 DOM。

【例1】

<div v-if="showFlag">

这段代码的功能是通过 v-if 指令动态控制一个 div 元素的显示与隐藏。当 showFlag 的值为 true 时,div 元素会被渲染到页面上;当 showFlag 的值为 false 时,div 元素不会被渲染。

【例2】

<template v-if='showFlag=== 1'> 

判断:showFlag是否等于 1
是→渲染模板内容
否→不渲染模板内容

v-else

一般不单独存在,一般和v-if或者v-else-if一起使用;

<body><div id="app"><p v-if="ok">Yes</p><p v-else>No</p><button @click="toggle()">切换</button></div><script>// 创建 Vue 实例const vm = new Vue({el: "#app",data: {ok: false, // 控制条件渲染},methods: {toggle() {this.ok = !this.ok; // 切换 ok 的值}}});</script>
</body>
  1. 条件渲染

    • 使用 v-if="ok"v-else 来控制显示 “Yes” 或 “No”。
    • oktrue 时,显示 “Yes”;当 okfalse 时,显示 “No”。
  2. 事件绑定

    • 使用 @click="toggle()" 绑定按钮点击事件。
    • 点击按钮时会调用 toggle() 方法,切换 ok 的值(在 truefalse 之间切换)。
  3. 数据绑定

    • data 中定义了 ok 属性,默认值为 false
    • 点击按钮后,ok 的值会被取反,从而触发视图更新。
  4. 测试结果

    • 页面初始状态会显示 “No”,因为 ok 的默认值为 false
    • 点击 “切换” 按钮后,ok 的值变为 true,页面会显示 “Yes”。
    • 再次点击按钮,ok 的值变为 false,页面会切换回 “No”。

v-else-if

指令时多分支判断

<div id="app"><div v-if="type === 'A'">Type A</div><div v-else-if="type === 'B'">Type B</div><div v-else-if="type === 'C'">Type C</div><div v-else>Not A, B, or C</div>
</div><script>var wue = new Vue({el: '#app',data: {type: 'A'}});
</script>
  1. HTML 部分

    • 根据 type 的值,Vue 会动态渲染对应的 <div>
    • 如果 type'A',则显示 “Type A”。
    • 如果 type'B',则显示 “Type B”。
    • 如果 type'C',则显示 “Type C”。
    • 如果 type 不是以上任何一种情况,则显示 “Not A, B, or C”。
  2. JavaScript 部分

    • Vue 实例绑定了 #app 元素,并定义了两个数据属性:
      • type: 'A'(当前值为 'A',因此会显示 “Type A”)。

v-show 和 v-if 对比

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

注意:v-if有更高的切换开销
v-show有更高的初始渲染开销。

<body><div id="app"><p v-if="flag">晴天</p><hr><p v-show="flag">心情好</p><button @click="flag = !flag">切换</button></div><script>var app = new Vue({el: '#app',data: {flag: true // 初始值为 true}});</script>
</body>
  1. 页面加载时,显示:
   晴天-----心情好

在这里插入图片描述

  1. 点击 “切换” 按钮后,flag 的值变为 false,页面更新为:
   -----

在这里插入图片描述

  1. 再次点击 “切换” 按钮,flag 的值变为 true,页面恢复为:
   晴天-----心情好

在这里插入图片描述

v-if条件渲染:条件满足,dom元素显示,若条件不满足,dom原始被删除了;是对dom元素操作的;
v-show 渲染:条件满足,dom元素style=display:none来显示原始的显示和隐藏的;

如果要非常频繁的切换,则使用v-show较好;如果在运行时条件不太可能改变,则v-if较好

自定义指令 v-has

组件中使用v-has根据按钮权限,判断是否显示该按钮

    <!-- 需要 create 权限的按钮 --><button v-has="'buyCarList:create'" @click="handleCreate">新 建</button>
v-has="'buyCarList:create'"

v-has 是一个自定义指令,用于权限控制,动态判断用户是否有某个权限。

通常会结合用户的权限列表(如从后端获取的权限数据)来判断是否渲染元素,如果用户没有 buyCarList:create 权限,则该按钮不会被渲染到页面上。

也就是说前端权限控制仅用于 UI 层隐藏,实际接口调用仍需后端验证,防止越权操作

具体逻辑通常在全局指令中定义,例如:

  1. 检查当前用户的权限列表。
  2. 如果权限列表中包含 buyCarList:create,则渲染该按钮。
  3. 如果不包含,则隐藏该按钮。

v-if 和 v-has 结合使用场景

完整示例

<template><div><!-- 普通条件渲染 --><p v-if="showWelcome">欢迎回来,{{ userName }}!</p><!-- 权限控制 --><button v-has="'create'">新建文章</button><button v-has="'delete'" v-if="selectedItem">删除选中项</button><!-- 权限 + 角色双重验证 --><div v-if="user.role === 'admin'" v-has="'audit'">审核功能</div><!-- v-else 配合使用 --><div v-if="isLoading">加载中...</div><div v-else>数据加载完成</div></div>
</template><script>
export default {data() {return {showWelcome: true,userName: 'Alice',selectedItem: null,user: { role: 'editor' }};}
};
</script>
  1. 普通条件渲染
<p v-if="showWelcome">欢迎回来,{{ userName }}!</p>
  • 功能:通过 v-if 指令控制一段文本的显示与隐藏。
  • 逻辑
    • showWelcome 的值为 true 时,显示 <p> 标签中的内容。
    • showWelcome 的值为 false 时,该段内容不会被渲染到 DOM 中。
  • 数据绑定
    • userName 是一个动态变量,用于显示用户的名称(如 “Alice”)。
  • 应用场景:适合用于登录后欢迎信息的显示或页面加载后的提示信息。

  1. 权限控制
<button v-has="'create'">新建文章</button>
<button v-has="'delete'" v-if="selectedItem">删除选中项</button>
  • 功能:通过自定义指令 v-has 控制按钮是否显示,结合 v-if 实现更复杂的条件判断。
  • 逻辑
    • 第一个按钮:只有当用户拥有 'create' 权限时,才会显示“新建文章”按钮。
    • 第二个按钮:不仅需要用户拥有 'delete' 权限,还需要满足 selectedItem 不为空的条件(即有选中项时才显示“删除选中项”按钮)。
  • 应用场景
    • 权限控制:确保用户只能看到自己有权访问的功能按钮。
    • 状态依赖:结合其他条件(如是否有选中项)进一步细化显示逻辑。

  1. 权限 + 角色双重验证
<div v-if="user.role === 'admin'" v-has="'audit'">审核功能</div>
  • 功能:结合角色和权限进行双重验证,只有同时满足条件时才会显示特定内容。
  • 逻辑
    • 首先检查 user.role 是否为 'admin'(管理员角色)。
    • 再通过 v-has 检查用户是否拥有 'audit'(审核)权限。
    • 只有当这两个条件都成立时,才会显示“审核功能”相关内容。
  • 应用场景
    • 多层次权限管理:既要求用户具有特定角色,又要求具备某些具体权限。
    • 适用于复杂的企业级应用,例如后台管理系统。
  1. v-else 配合使用:
   <div v-if="isLoading">加载中...</div><div v-else>数据加载完成</div>
  • v-else 必须紧跟在 v-ifv-else-if 后面。
  • isLoadingtrue 时,显示“加载中…”。
  • isLoadingfalse 时,显示“数据加载完成”。

补充说明

  1. v-ifv-show 的区别:
    • v-if 是基于条件动态地添加或移除 DOM 元素。
    • v-show 则是通过 CSS 的 display 属性来控制元素的显示 / 隐藏。
    • 如果需要频繁切换显示状态,推荐使用 v-show,因为它不会频繁操作 DOM。

示例:

   <p v-show="showMessage">这是通过 v-show 显示的消息</p>
  1. 复杂条件判断:
    如果条件逻辑更复杂,可以考虑使用计算属性来简化模板中的逻辑。

    示例:

   <button v-if="isAdmin">管理员操作</button>
   computed: {isAdmin() {return this.user.role === 'admin';}}
  1. v-else-if 的使用:
    如果有多个条件分支,可以使用 v-else-if

    示例:

   <div v-if="score > 90">优秀</div><div v-else-if="score > 60">及格</div><div v-else>不及格</div>

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

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

相关文章

【项目合集】只能xx养殖系统,STM32、esp8266、OLED屏幕、dht11、光敏、水位、加热、风扇

硬件 STM32 主控ESP8266 WIIF 模块烟雾传感器dht11 温湿度传感器光敏传传感器&#xff08;偏暗、亮两种状态&#xff09;水位检测OLED 显示当前状态&#xff08;环境数据&#xff09;加热模块&#xff08;灯代替&#xff09;风扇模块电源模块继电器&#xff08;控制风扇&#…

29_项目

目录 http.js 1、先注册账号 register.html 2、再登录 login.html 3、首页 index.html 4 详情 details.html cart.html css index.css register.css details.css 演示 进阶 http.js let baseURL "http://localhost:8888"; let resgiterApi baseURL &…

【嵌入式学习3】多任务编程

目录 1、多任务 并发&#xff1a;在一段时间内交替去执行任务 并行&#xff1a; 2、线程 进程与线程 守护线程 1、多任务 在同一时间内执行多个任务&#xff0c;多任务分为并发和并行两种形式 并发&#xff1a;在一段时间内交替去执行任务 软件1执行0.01秒&#xff0c;切…

链路聚合(Link Aggregation)

目录 一. 链路聚合概述 1. 基本概念 2. 实现条件 3. 成员接口和成员链路 二. 链路聚合模式 1. 手工模式 2. LACP模式 三. 负载分担 1. 基于数据包的负载分担 2. 基于数据流的负载分担 一. 链路聚合概述 1. 基本概念 链路聚合&#xff08;Link Aggregation&#xff…

QT图片轮播器(QT实操学习2)

1.项目架构 1.UI界面 2.widget.h​ #ifndef WIDGET_H #define WIDGET_H#include <QWidget>#define TIMEOUT 1 * 1000 QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent n…

【HTML5】02-列表 + 表格 + 表单

本文介绍 列表、表格、表单的具体使用。 目录 1. 列表 1.1 无序列表 1.2 有序列表 1.3 定义列表 2. 表格 2.1 基本使用 2.2 表格结构标签 2.3 合并单元格 3. 表单 3.1 input标签 3.2 input 标签占位文本 3.3 单选框 3.4 上传文件 3.5 多选框 3.6 下拉菜单 3.7…

Python的ASGI Web 服务器之uvicorn

文章目录 什么是uvicornUvicorn 和 uWSGI 对比区别安装 Uvicorn使用示例 什么是uvicorn 官网https://www.uvicorn.org/ Uvicorn 是一个用于 Python 的 ASGI Web 服务器实现。 Until recently Python has lacked a minimal low-level server/application interface for async…

笔记本电脑更换主板后出现2203:System configuration is invalid,以及2201、2202系统错误的解决

笔记本电脑更换主板后启动出现2203:System configuration is invalid,以及2201、2202系统错误的解决 自用的一台ThinkpadT490笔记本电脑 ,由于主板故障,不得不更换主板,通过某宝购置主板后进行了更换。 具体拆卸笔记本可搜索网络视频教程。 注意: 在更换主板时,注意先拍…

RAG基建之PDF解析的“流水线”魔法之旅

将PDF文件和扫描图像等非结构化文档转换为结构化或半结构化格式是人工智能的关键部分。然而,由于PDF的复杂性和PDF解析任务的复杂性,这一过程显得神秘莫测。 在RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”与“陷阱”中,我们介绍了PDF解析的主要任务,对现…

驱动开发系列49 - 搭建 Vulkan 驱动调试环境(编译 mesa 3D)- Ubuntu24.04

一:搭建Vulkan运行环境 安装vulkan依赖包: 1. sudo apt install vulkan-tools 2. sudo apt install libvulkan-dev 3. sudo apt install vulkan-utility-libraries-dev spirv-tools 4. sudo apt install libglfw3-dev libglm-dev 5. sudo apt install libxxf86vm-dev libxi-…

项目代码第8讲【数据库基础知识】:SQL(DDL、DML、DQL、DCL);函数(聚合、字符串、数值、日期、流程);约束;多表查询;事务

黑马程序员 MySQL数据库入门到精通&#xff0c;从mysql安装到mysql高级、mysql优化全囊括_哔哩哔哩_bilibili 一、数据库相关概念 1、主流的关系型数据库都支持SQL语言——SQL语言可以操作所有的关系型数据库 像MySQL、Oracle Database、Microsoft SQL Server、IBM Db2等主流的…

如何在阿里云linux主机上部署Node.Js

在阿里云的Linux服务器上搭建Node.js编程环境可以通过以下步骤完成。这里以常见的 Ubuntu/CentOS 系统为例&#xff0c;提供两种安装方式&#xff08;包管理器、NVM多版本管理&#xff09;&#xff1a; 一、通过包管理器安装&#xff08;适合快速安装指定版本&#xff09; 1. …

机器学习——集成学习框架(GBDT、XGBoost、LightGBM、CatBoost)、调参方法

一、集成学习框架 对训练样本较少的结构化数据领域&#xff0c;Boosting算法仍然是常用项 XGBoost、CatBoost和LightGBM都是以决策树为基础的集成学习框架 三个学习框架的发展是&#xff1a;XGBoost是在GBDT的基础上优化而来&#xff0c;CatBoost和LightGBM是在XGBoost的基础上…

第十五章:Python的Pandas库详解及常见用法

在数据分析领域&#xff0c;Python的Pandas库是一个不可或缺的工具。它提供了高效的数据结构和数据分析工具&#xff0c;使得数据处理变得简单而直观。本文将详细介绍Pandas库的基本功能、常见用法&#xff0c;并通过示例代码演示如何使用Pandas进行数据处理。最后&#xff0c;…

用 pytorch 从零开始创建大语言模型(三):编码注意力机制

从零开始创建大语言模型&#xff08;Python/pytorch &#xff09;&#xff08;三&#xff09;&#xff1a;编码注意力机制 3 编码注意力机制3.1 建模长序列的问题3.2 使用注意力机制捕捉数据依赖关系3.3 通过自注意力关注输入的不同部分3.3.1 一个没有可训练权重的简化自注意力…

STM32_HAL开发环境搭建【Keil(MDK-ARM)、STM32F1xx_DFP、 ST-Link、STM32CubeMX】

安装Keil(MDK-ARM)【集成开发环境IDE】 我们会在Keil(MDK-ARM)上去编写代码、编译代码、烧写代码、调试代码。 Keil(MDK-ARM)的安装方法&#xff1a; 教学视频的第02分03秒开始看。 安装过程中请修改一下下面两个路径&#xff0c;避免占用C盘空间。 Core就是Keil(MDK-ARM)的…

用python压缩图片大小

下载库 cmd开命令或者PyCharm执行都行 pip install pillow2. 然后就是代码 from PIL import Imagedef compress_image(input_path, output_path, quality85, max_sizeNone):"""压缩图片大小。参数:- input_path: 输入图片路径- output_path: 输出图片路径- qu…

【自用记录】本地关联GitHub以及遇到的问题

最近终于又想起GitHub&#xff0c;想上传代码和项目到仓库里。 由于很早之前有在本地连接过GitHub&#xff08;但没怎么用&#xff09;&#xff0c;现在需要重新搞起&#xff08;操作忘得差不多&#xff09;。 在看教程实操的过程中遇到了一些小问题&#xff0c;遂记录一下。 前…

从零开始研发GPS接收机连载——19、自制GPS接收机的春运之旅

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 从零开始研发GPS接收机连载——19、自制GPS接收机的春运之旅 许久未曾更新这个系列&#xff0c;并非我平日里对这事儿没了兴致&#xff0c;不再愿意折腾。实则是受限于自身条…