vue2 自定义指令,插槽

一、学习目标

1.自定义指令

  • 基本语法(全局、局部注册)
  • 指令的值
  • v-loading的指令封装

2.插槽

  • 默认插槽
  • 具名插槽
  • 作用域插槽

二、自定义指令

1.指令介绍

  • 内置指令:v-html、v-if、v-bind、v-on… 这都是Vue给咱们内置的一些指令,可以直接使用

  • 自定义指令:同时Vue也支持让开发者,自己注册一些指令。这些指令被称为自定义指令

    每个指令都有自己各自独立的功能

2.自定义指令

概念:自己定义的指令,可以封装一些DOM操作,扩展额外的功能

3.自定义指令语法

  • 全局注册

    //在main.js中
    Vue.directive('指令名', {"inserted" (el) {// 可以对 el 标签,扩展额外功能el.focus()}
    })
    
  • 局部注册

    //在Vue组件的配置项中
    directives: {"指令名": {inserted () {// 可以对 el 标签,扩展额外功能el.focus()}}
    }
    
  • 使用指令

    注意:在使用指令的时候,一定要先注册再使用,否则会报错
    使用指令语法: v-指令名。如:<input type="text" v-focus/>

    注册指令时不用v-前缀,但使用时一定要加v-前缀

4.指令中的配置项介绍

  • inserted:被绑定元素插入父节点时调用的钩子函数

  • el:使用指令的那个DOM元素

三、自定义指令-指令的值

1.需求

实现一个 color 指令 - 传入不同的颜色, 给标签设置文字颜色

2.语法

1.在绑定指令时,可以通过“等号”的形式为指令 绑定 具体的参数值

<div v-color="color">我是内容</div>

2.通过 binding.value 可以拿到指令值,指令值修改会 触发 update 函数

directives: {color: {inserted (el, binding) {el.style.color = binding.value},update (el, binding) {el.style.color = binding.value}}
}

四、插槽-默认插槽

1.作用

让组件内部的一些 结构 支持 自定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dpMMVBcw-1693120724153)(assets/1682410215245.png)]

2.需求

将需要多次显示的对话框,封装成一个组件

3.问题

组件的内容部分,不希望写死,希望能使用的时候自定义。怎么办

4.插槽的基本语法

  1. 组件内需要定制的结构部分,改用<slot></slot>占位
  2. 使用组件时, <MyDialog></MyDialog>标签内部, 传入结构替换slot
  3. 给插槽传入内容时,可以传入纯文本、html标签、组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pfqQ1rYx-1693120724155)(assets/1682410329794.png)]

5.代码示例

MyDialog.vue

<template><div class="dialog"><div class="dialog-header"><h3>友情提示</h3><span class="close">✖️</span></div><div class="dialog-content"><!-- 1. 在需要定制的位置,使用slot占位 --><slot></slot></div><div class="dialog-footer"><button>取消</button><button>确认</button></div></div>
</template><script>
export default {data () {return {}}
}
</script><style scoped></style>

App.vue

<template><div><!-- 2. 在使用组件时,组件标签内填入内容 --><MyDialog><div>你确认要删除么</div></MyDialog><MyDialog><p>你确认要退出么</p></MyDialog></div>
</template><script>
import MyDialog from './components/MyDialog.vue'
export default {data () {return {}},components: {MyDialog}
}
</script><style>
body {background-color: #b3b3b3;
}
</style>

五、插槽-后备内容(默认值)

1.问题

通过插槽完成了内容的定制,传什么显示什么, 但是如果不传,则是空白

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qXdu6nU6-1693120724156)(assets/1682411494612.png)]

能否给插槽设置 默认显示内容 呢?

2.插槽的后备内容

封装组件时,可以为预留的 <slot> 插槽提供后备内容(默认内容)。

3.语法

在 标签内,放置内容, 作为默认显示内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VnmXZLhd-1693120724156)(assets/1682412365046.png)]

4.效果

  • 外部使用组件时,不传东西,则slot会显示后备内容

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-czRlq6ts-1693120724157)(assets/1682412432656.png)]

  • 外部使用组件时,传东西了,则slot整体会被换掉

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KcVkHhlt-1693120724158)(assets/1682412459027.png)]

六、插槽-具名插槽

1.需求

一个组件内有多处结构,需要外部传入标签,进行定制 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gkKRZnvz-1693120724158)(assets/1682413134876.png)]

上面的弹框中有三处不同,但是默认插槽只能定制一个位置,这时候怎么办呢?

2.具名插槽语法

  • 多个slot使用name属性区分名字

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S3JcNeDi-1693120724159)(assets/1682413391727.png)]

  • template配合v-slot:名字来分发对应标签

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NLotdNx4-1693120724160)(assets/1682413411921.png)]

3.v-slot的简写

v-slot写起来太长,vue给我们提供一个简单写法 #

七、作用域插槽

1.插槽分类

  • 默认插槽

  • 具名插槽

插槽只有两种,作用域插槽不属于插槽的一种分类

2.作用

定义slot 插槽的同时, 是可以传值的。给 插槽 上可以 绑定数据,将来 使用组件时可以用

3.场景

封装表格组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oy8dRCHH-1693120724160)(assets/1682414342139.png)]

4.使用步骤

  1. 给 slot 标签, 以 添加属性的方式传值

    <slot :id="item.id" msg="测试文本"></slot>
    
  2. 所有添加的属性, 都会被收集到一个对象中

    { id: 3, msg: '测试文本' }
    
  3. 在template中, 通过 #插槽名= "obj" 接收,默认插槽名为 default

    <MyTable :list="list"><template #default="obj"><button @click="del(obj.id)">删除</button></template>
    </MyTable>
    

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

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

相关文章

Java“牵手”天猫商品快递费用API接口数据,天猫API接口申请指南

天猫平台商品快递费用接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取天猫商品的标题、价格、库存、商品快递费用&#xff0c;宝贝ID&#xff0c;发货地&#xff0c;区域ID&#xff0c;快递费用&#xff0c;月销量、总销量、库存、详情…

freenom php,Freenom免费域名.TK、.CF、.ML、.GA注册及使用方法

去年,Freenom网站来了个大改版,不仅网站页面进行了大幅度调整,更重要的是Freenom这次终于统一了.TK、.CF、.ML、.GA这四个免费域名账号的后台登录,原先.TK、.CF、.ML、.GA都有各自独立的账号系统,现在全部统一使用Freenom的后台账号管理系统。 改版后的Freenom实际上整合了…

<七> objectARX开发:创建自定义实体

1、介绍 在某些情况下,CAD中的实体对象无法满足需求,我们需要针对实际情况来设计并绘制自定义的实体,下面就用一个简单的例子来介绍一下自定义实体绘制。 实体形状:包括实体夹点和文字夹点拖动实现。 2、效果 3、创建自定义实体的步骤 新建一个从AcDbEntity继承的类,如C…

穷建站(二):在DnsPod中为申请的tk域名进行域名解析

文章目录 1 序2 DnsPod域名解析2.1 DnsPod网站账号注册2.2 在DnsPod中添加需要解析的域名 3 在Freenom中进行域名解析配置 1 序 在上一篇博文中&#xff1a;穷建站&#xff08;一&#xff09;&#xff1a;申请免费的tk顶级域名 博文中已经成功的申请了一个tk顶级域名&#xff…

最容易申请到的免费顶级域名.tk

TK与COM、NET、CN、TV一样同属顶级域名、是小国家域名、也是网络上最容易申请到的免费域名之一。 Dot TK网站提供免费和收费两种域名:免费域名必须保证在90天内有25次访问,否则将域名给收回。 免费注册的用户仅有其域名的使用权。只要您每九十天在您的域名名称里有活动一次,…

关于申请个人域名和虚拟主机---个人域名篇(.tk顶级域名)

本文介绍国外免费域名.tk的注册和部分使用,顶级域名哦 从这里注册.tk,打开后会是这个样子 填一个你想申请的域名,这里我填的测试域名是wokanxing.tk 填完后 go 当然可以用自己的DNS解析..但是我没有..而且主机屋的貌似不支持.tk的解析.最近我在问客服,等有进展再告诉大家 当…

TK域名首次注册教程(咸干花生)

http://wenku.baidu.com/link?urlrvRbl9BWNOSKnNffHy-u0TK9lJfZifPSnHdARGhT8oVuKaxU0fPX-QyEcH43KFinmJztbvEIRVabYw8sxK_5TEI6r2EGhsmORwSKVVKq0u_ http://wenku.baidu.com/link?urljUE7rnWFsm4UZ-58RckyFx63Vy7xNstOrfSXP12RKGIx57zOEcpOnH3rpIituAppG1YzYE-3-OhDN5jismEy…

穷建站(一):申请免费的tk顶级域名

文章目录 1 序2 注册免费的tk顶级域名 1 序 建一个个人网站我相信是很多人从初中甚至是高中开始就想做的一件事情&#xff0c;起码我是这样的。 在初中的时候第一次上网&#xff0c;我就很好奇网站到底是怎么建起来的&#xff0c;我们又是如何通过互联网去访问到我们的站点并成…

TK免费顶级域名注册申请和使用:域名DNS解析设置和绑定空间

TK域名算是目前唯一一个可以注册和使用的免费顶级域名了&#xff0c;在国内使用的人数非常多&#xff0c;用TK域名搭建的网站也是不可计数&#xff0c;和CO.CC域名一样&#xff0c;TK域名网站提供了多国语言&#xff0c;包括了简体中文在内&#xff0c;使用简单方便。 之前也介…

怎么注册tk域名_关于注册免费TK域名不成功的几个问题解决方案

网友热度 14,151 ℃ - 1条评论 看到老左Q群里不少的新手站长在讨论.TK免费域名注册不成功的问题&#xff0c;我本以为是之前的"免费.TK域名注册详细图文教程"可能会因为限制&#xff0c;甚至是教程界面的变化我们不好注册使用。因为在之前的同类.CF和.ML域名也是这套…

未注册TK域名批量搜索器

TK域名是免费顶级域名&#xff0c;和CN域名性质一样&#xff0c;现在除了支持转发外&#xff0c;已经可以设置A、CNAME、MX记录和修改DNS服务器&#xff01;现在很稳定而且还有许多4字母的域名可以注册&#xff0c;可是上网页只能一个一个查&#xff0c;真是太慢&#xff0c;想…

UG NX 12 类选择器

在NX建模中&#xff0c;经常会面临选择操作对象的问题&#xff0c;有时使用鼠标在图形窗口中直接选择对象会比较困难&#xff0c;还会容易产生误选择的现象。NX为了提高选择操作的效率&#xff0c;专门提供了类选择器&#xff08;“类选择”对话框&#xff09;&#xff0c;以在…

UG NX 12 抽取面特征

抽取体可用来创建所选取特征的关联副本。抽取体操作的对象包括面、面区域和体。如果抽取一条曲线&#xff0c;则创建的是曲线特征&#xff1b;如果抽取一个面或一个区域&#xff0c;则创建一个片体&#xff1b;如果抽取一个体&#xff0c;则新体的类型将与原先的体相同&#xf…

UG NX 12 布尔运算

布尔操作可以对两个或两个以上已经存在的实体进行求和、求差及求交运算&#xff08;注意&#xff1a;编辑拉伸、旋转、变化的扫掠特征时&#xff0c;用户可以直接进行布尔运算操作&#xff09;&#xff0c;可以将原先存在的多个独立的实体进行运算以产生新的实体。进行布尔运算…

NXOpen相关

网上文档 可以搜索GTAC&#xff0c;进入相应版本的NX Documentation. 其中Product area下面的Programming Tools包含了NXOpen开发相关的信息。如要本地查看需要下载。 进入NX Open模块。进入Open for C/C: Open C Reference Guide 内部包含了C语言API。包括各种调用NX模块的函…

UG NX二次开发-外部模式

NX二次开发外部模式(.exe)制作设置 UG/Open API 函数能在两种不同的环境下运行,根据编译链接情况的不同,UG/Open API 二次开发程序又具有两种形式: a、外部式(External):此时UG/Open API程序可以脱离UG环境,在操作系统下单独运行,或者作为UG的一个子进程独立运行。 特…

Jetson NX性能介绍

NX的各个工作模式及功耗&#xff1a; 与其他jetson系列板卡的对比

Jetson-Xavier-NX使用教程(这里说插上烧好镜像的SD卡上电就可以直接用了)

这里说插上烧好镜像的SD卡上电就可以直接用了&#xff0c;似乎是不需要特意更改或者设置什么的。 转载自&#xff1a;https://mp.weixin.qq.com/s/Lhm9FFctl7BShdnBwmCV4w Jetson-Xavier-NX使用教程 原创 lance 计算机视觉算法工程师 2月18日 1.介绍 microSD卡插槽用于主存…

JETSON XAVIER NX 入门教程(一)入手刷机过程

转载自&#xff1a;https://mp.weixin.qq.com/s/9HFZaP3A4cslJpuU5AqmGQ JETSON XAVIER NX 入门教程&#xff08;一&#xff09;入手刷机过程 原创 CXY 北理玄驹合作小组 5月13日 一、Jetson Xavier NX 简介 NVIDIA Jetson Xavier™ NX是体型超小的AI超级计算机&#xf…

Jetson Xavier NX

Jetson Xavier NX 提示&#xff1a;记录学习过程&#xff0c;倘若有抄袭请原谅 文章目录 Jetson Xavier NX前言一、安装系统二、烧镜像三、启动系统打开风扇先 四、配置VNC&#xff08;此处借鉴&#xff09;五、安装中文输入法六、安装cuda七、安装pytorch跟torchvision八、试试…