问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Tag模块数组indexOf,splice的使用方法

发布网友 发布时间:2天前

我来回答

1个回答

热心网友 时间:15小时前

小知识

indexOf()查找一个数值在不在当前数组中,若在就返回第一次该数值出现的索引,否则返回-1。arr.indexOf(2)//0arr.indexOf(3)//-1

splice:参数(开始项的下标,剪切长度,剪切以后最后一位开始添加数据)

Tags模块数组外部传来的tags数据

Tags分为两种,未选中和已选中:

tags=[];,tags是一个数组,但是tags是一个字符串数组该如何表示?

tags:string[]=[];,tags是一个字符串数组,目前是一个空数组;

selectedTags:string[]=[];,已被选中的数组也是字符串数组,默认是一个空数组;

tags是外部传来的数组:@Prop()tags:string[]=[];

因为tags是外部传来的数据,所以没有默认值。有可能给值,有可能是空的。@Prop()tags:string[]|undefined;

在外部准备赋值时<Tagstags=""/>,发现两个都是tags,有点重复了,所以把tags改成dataSource,代表意思就是一开始的数据源,外部输入的最开始的数据;

所以变成了,@Prop()dataSource:string[]|undefined;

外部就是

<Tags:data-source="tags"/>---------------------tags:['衣','食','住','行']

在内部渲染tags:遍历datasource也就是tags里面的内容,并显示在{{tag}}里面,用v-for,就得加个key。<liv-for="tagindataSource":key=“tag”>{{tag}}</li>

这样tags的内容“衣食住行”就会显示在页面上。

已选中的数据

selectedTags:string[]=[];,已被选中的数组也是字符串数组,默认是一个空数组;

点击哪个就是选中哪个;在li上添加一个click;

`<liv-for="tagindataSource":key=“tag”@click="select(tag)">{{tag}}</li>`

select如何实现?给select一个tag,就把这个tag放到专门存放已选中的的数组里。

select(tag;string){this.selectedTags.push(tag)//把这个tag放到selectedTags里面。}

在li里面,如果tag在selectedTags里面,那么这个tag就是被选中的;:class={selected:selectedTags.indexOf(tag)>=0}

在CSS里面给selected加样式,则选中时,就会体现那个样式。&.selected{background:darken($bg,50%);}

再次点击时,就取消选中该如何表达?

先绑定一个点击事件;<button@click="create">新增标签</button>

create,如何创建呢,在ts内声明方法;

create(){constname=window.prompt(message:'请输入标签名');}

创建之后,把他放到datasource里面

create(){constname=window.prompt('请输入标签名');if(name===''){window.alert('标签名不能为空');}elseif(this.dataSource){//如果这个datasource存在;this.$emit('update:dataSource',[...this.dataSource,name]);}}

解析:如果标签名不为空,就像外部发送一个更新datasource的请求,并在datasource后面,添加新增的name。

在tags上加一个.sync,就会把传的这个数组[...this.dataSource,name],赋值给datasource。<Tags:data-source.sync="tags/>

如果点击时,tag在里面,那么就删掉,就是回到未选中的状态;

如果tag不在里面就是添加到已选中的数组里。

constindex=this.selectedTags.indexOf(tag);//查找this.selectedTags是否有tag,若无,index=-1,若有,index>0。if(index>=0){this.selectedTags.splice(index,1);//从index的位置开始剪切,剪切1个;意思就是把这个删除,从已选中的数组中拿出去。}else{this.selectedTags.push(tag);//如果tag里面没有的话,就把它放入已选中的数组里面里面;}新增标签

当点击新增标签时,新添加标签;

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
江西蓝天学院和赣江职业技术学院哪个好? 江西有什么好的中专学校 什么是单点登录(SSO),以及单点登录的实现流程 前端实现单点登录(SSO) 前端单点登录如何实现 面试官:来说说单点登录的三种实现方式 为什么很多人不买哈弗H9 座机如何开通国内长途 座机如何申请 辽宁省出租车手续怎么办? JavaScript indexOf简介 对于一个JS对象数组怎么使用IndexOf方法得到索引呢? Array.indexOf() 学习 狼来了是什么效应 当两种刺激都出现,认知者会产生首因效应还是近因效应呢? 大过年的…… 什么叫海康威视项目机 移动的手机流量没有了要怎么升级 国内知名精益生产咨询公司 OPPOa11如何一次删除多个联系人 ...贸易公司于2000年2月10日签订了一份成衣买卖合同,由服装厂以CIF条件... 什么是服装对外加工贸易 服装买卖合同中的服装是合同标吗? ...服装贸易公司通过制衣厂付给我公司,那购销合同 服装买卖合同中的服装属于合同标的吗 什么是服装代理 怎样隐藏文件夹电脑电脑上怎么隐藏文件夹 w7不显示隐藏文件夹-(win7怎样显示隐藏文件夹) 怎样把手机里的视频隐藏起来不让别人看到啊 中国车险哪家的全车险比较好,请大家指点指点呢? 手机耗电太快了怎么解决 教你方法,轻松解决 2021年五粮液(000858)总资产、总负债、营业收入、营业成本及净利润统... 现在五粮液000858可以买进么? 男生该如何去掉鼻子上的黑头? 如何有效祛除鼻子上的黑头?有哪些方法? 怎样有效改善鼻子上的黑头?有哪些技巧? 澳大利亚高中留学有哪些要求呢? 澳大利亚初中留学的条件 我现在是初中生,想去澳洲读高中。我的英语成绩一般,去读的话必须要有... ...要在初中读够两年半才可以吗??(我想在澳大利亚读初三,今年14岁)等... 通知凭证有哪些 入账通知单是什么凭证 入账通知书是什么 采购付款通知单是什么凭证 干型和半干型葡萄酒哪个好 ...现在由于一些原因开始接文稿。 话不多说,下面是接文搞的价格?_百度... 异地恋一定没结果吗 word统一改数字字体 sothat前面加什么后面加什么 我们计划五一期间去古镇游玩,四川有哪些古镇既适合拍照又富有文化...