vue自定义指令:指定文字高亮

vue自定义指令:指定文字高亮

自定义指令

除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令。注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令

钩子函数

一个指令定义对象可以提供如下几个钩子函数 (均为可选):

  • bind:只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。

  • inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

  • update:所在组件的 VNode 更新时调用,但是可能发生在其子 VNode 更新之前。指令的值可能发生了改变,也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 (详细的钩子函数参数见下)。

  • componentUpdated:指令所在组件的 VNode 及其子 VNode 全部更新后调用。

  • unbind:只调用一次,指令与元素解绑时调用。

指令钩子函数会被传入以下参数:

  • el:指令所绑定的元素,可以用来直接操作 DOM。
  • binding:一个对象,包含以下 property:
    • name:指令名,不包括 v- 前缀。
    • value:指令的绑定值,例如:v-my-directive=“1 + 1” 中,绑定值为 2。
    • oldValue:指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。
    • expression:字符串形式的指令表达式。例如 v-my-directive=“1 + 1” 中,表达式为 “1 + 1”。
    • arg:传给指令的参数,可选。例如 v-my-directive:foo 中,参数为 “foo”。
    • modifiers:一个包含修饰符的对象。例如:v-my-directive.foo.bar 中,修饰符对象为 { foo: true, bar: true }。
  • vnode:Vue 编译生成的虚拟节点。移步 VNode API 来了解更多详情。
  • oldVnode:上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。

自定义指令:指定文字高亮

创建自定义指令

在项目 src 目录下创建自定义指令目录 directives ,并在目录下创建 index.js 和 directives.js 文件
在这里插入图片描述

index.js:
/** @Description: 自定义指令*/
import directives from './directives';export default {install(Vue) {Object.keys(directives).forEach((key) => {Vue.directive(key, directives[key]);})},
}
directives.js:
/*** @desc 指定文字高亮指令* @param hText 需要高亮的文字* @param text 全部文字* @param color 高亮文字的颜色*/
const textLight = {bind(el, binding, vnode) {const { value } = binding;if (value && typeof value === 'object') {const { hText, text, color } = value;el.innerHTML = text.replace(new RegExp(hText, 'ig'), (t) => {return `<span style="color: ${color}">${t}</span>`;});}},update(el, binding, vnode) {const { value } = binding;if (value && typeof value === 'object') {const { hText, text, color } = value;el.innerHTML = text.replace(new RegExp(hText, 'ig'), (t) => {return `<span style="color: ${color}">${t}</span>`;});}},
};export default {textLight
};
main.js:
......import Directives from './directives';
Vue.use(Directives);

使用自定义指令

<template><div class="demo"><p v-textLight="{ hText: hText1, text: text, color: color }"></p><p v-textLight="{ hText: hText2, text: text, color: color }"></p></div>
</template><script>
export default {data() {return {hText1: '自定义指令', // 一个高亮文字hText2: '核心|自定义指令', // 多个高亮文字text: '除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令。',color: '#c7254e'}}
}
</script>

效果

在这里插入图片描述

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

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

相关文章

【重点】【区间问题】56.合并区间

题目 注意有个类似的题目&#xff1a;&#xff0c;注意区分。 class Solution {public int[][] merge(int[][] intervals) {List<List<Integer>> res new ArrayList<>();Arrays.sort(intervals, (a1, a2) -> {return a1[0] - a2[0];});int left Intege…

JS实现成才网注册系统(网页数据验证)

主代码 <!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-equiv"Conten…

Hadoop进阶学习---HDFS分布式文件存储系统

1.hdfs分布式文件存储的特点 分布式存储:一次写入,多次读取 HDFS文件系统可存储超大文件,时效性较差. HDFS基友硬件故障检测和自动快速恢复功能. HDFS为数据存储提供很强的扩展能力. HDFS存储一般为一次写入,多次读取,只支持追加写入,不支持随机修改. HDFS可以在普通廉价的机器…

Linux: 文档 :相关接口文档手册还是需要仔细阅读

接口文档的阅读&#xff0c;一定要仔细。最近遇到一个问题&#xff0c;明明文档里有说&#xff0c;read函数读取到的是一个或者多个events&#xff0c;但是代码里依然按照一个来处理。就会导致漏event的可能。漏了event&#xff0c;后续的逻辑就会受影响。 Each successful rea…

llama.cpp部署(windows)

一、下载源码和模型 下载源码和模型 # 下载源码 git clone https://github.com/ggerganov/llama.cpp.git# 下载llama-7b模型 git clone https://www.modelscope.cn/skyline2006/llama-7b.git查看cmake版本&#xff1a; D:\pyworkspace\llama_cpp\llama.cpp\build>cmake --…

Leetcode1038. 从二叉搜索树到更大和树(每日一题)

目录 ⚽题目&#xff1a; &#x1f3d0;题目分析&#xff1a; &#x1f3c0;题目解答&#xff1a; &#x1f94e;代码如下&#xff1a; ⚽题目&#xff1a; 给定一个二叉搜索树 root (BST)&#xff0c;请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值…

Stream 流

配合Lambda表达式&#xff0c;简化集合和数组的操作 获取Stream流对象 集合 Collection接口中的方法&#xff1a;stream() 单列&#xff1a;直接调用stream() 多列&#xff1a;间接获取&#xff0c;map.entrySet() ArrayList<String> list new ArrayList<>();…

SSM项目实战-前端-在Index.vue中展示第一页数据

1、util/request.js import axios from "axios";let request axios.create({baseURL: "http://localhost:8080",timeout: 50000 });export default request 2、api/schedule.js import request from "../util/request.js";export let getSchedu…

4-Docker命令之docker run

1.docker run介绍 docker run命令是用来创建新的容器并运行相关命令 2.docker run用法 docker run [参数] [root@centos79 ~]# docker run --helpUsage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]Create and run a new container from an imageAliases:docker conta…

传输层可靠传输的原理

目录 1.停止等待协议 2.连续ARQ协议 3.TCP报文段的首部格式 4.TCP的滑动窗口机制 &#xff08;1&#xff09;发送窗口 &#xff08;2&#xff09;接收窗口 &#xff08;3&#xff09;发送缓存 5.超时重传时间的选择 6.选择确认SACK(Selective ACK) 7.使用滑动窗口实现…

PAD平板签约投屏-高端活动的选择

传统的现场纸质签约仪式除了缺乏仪式感之外还缺少互动性&#xff0c;如果要将签约的过程投放到大屏幕上更是需要额外的硬件设备成本。相比于传统的纸质签约仪式&#xff0c;平板现场电子签约的形式更加的新颖、更富有科技感、更具有仪式感。 平板签约投屏是应用于会议签字仪式的…

【NGINX--12】性能调优

1、使用压测工具实现测试自动化 需要使用压测工具实现测试自动化&#xff0c;以确保测试一致性和可重复性。 使用 HTTP 压测工具&#xff0c;例如 Apache Jmeter、Locust、Gatling 或团队标准化的任何测试工具。为压测工具创建配置&#xff0c;对您的 Web 应用做全面测试&…

【C语言】static 和 extern 的理解和应用。

对于 C 语言的初学者&#xff0c;对 static 和 extern 的理解可能会遇到一些问题。 用在哪&#xff1f; 首先明确 static 和 extern 可以用在哪&#xff1f; static 和 extern 都可以用来修饰【变量】和【函数】。ok&#xff0c;知道这么多就行了&#xff0c;所谓实践出真知&…

【Unity动画】为一个动画片段添加事件Events

动画不管播放到那一帧&#xff0c;我们都可以在这里“埋伏”一个事件&#xff08;调用一个函数并且给函数传递一个参数&#xff0c;参数在外部设置&#xff0c;甚至传递一个物体&#xff09;&#xff01; 嗨&#xff0c;亲爱的Unity小伙伴们&#xff01;你是否曾想过为你的动画…

常用性能工具与性能分析

iperf3 iperf3是一个用于测量网络带宽和性能的工具。它支持客户端-服务器模式&#xff0c;通过在客户端和服务器之间进行数据传输来评估网络的吞吐量、延迟和丢包率等指标。 iperf3的基本使用方法&#xff1a; 1. 安装iperf3&#xff1a; 首先&#xff0c;你需要在客户端和…

WPF halcon 机器视觉

1 鼹鼠的故事第14集 鼹鼠与智能房 鼹鼠无意中坐进了一辆小汽车&#xff0c;小汽车开进了一所智能住宅。鼹鼠看到房主在智能房里&#xff0c;享受着现代化的服务。趁着主人看电视的时候&#xff0c;鼹鼠也享用了一顿丰盛的智能晚餐。 小编大胆的畅想&#xff0c;这些食物 前一秒…

创建conan包-打包现有二进制文件

创建conan包-打包现有二进制文件 1 Packaging Existing Binaries1.1 Packaging Pre-built Binaries1.2 Downloading and Packaging Pre-built Binaries 本文是基于对conan官方文档Packaging Existing Binaries翻译而来&#xff0c; 更详细的信息可以去查阅conan官方文档。 1 P…

Ubuntu开机出现Welcome to emergency mode解决办法

问题描述 笔记本电脑安装了windows 10和ubuntu 16.04双系统&#xff0c;windows系统关机时按电源键强制关机&#xff0c;再次开机进入Ubuntu系统时无法进入图形界面&#xff0c;出现Welcome to emergency mode。 问题分析 异常关机导致文件系统受损&#xff0c;依据提示使用…

上传文件获得下载链接方法:直链!直链!

&#xff01;非 百度网盘 不是直接用网盘下载&#xff0c;要用直链&#xff0c;百度上有很多方法。 我自己研究了个&#xff0c;跳过百度网盘输密码进网页的方法 还是先还是要把文件上传网盘让后搜索网盘获取直链的方法&#xff08;那百度网盘举例&#xff09; 地址 https:…

数据结构:字典树(前缀树,Trie树),压缩字典树(Radix)

字典树Trie Tree 字典树也称前缀树&#xff0c;Trie树。在 Elasticsearch 的倒排索引中用的也是 Trie 树。是一种针对字符串进行维护的数据结构。 字典树是对词典的一种存储方式&#xff0c;这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径&#xff0c;…