博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue + jquery 实现表格指定列的文字收缩
阅读量:6611 次
发布时间:2019-06-24

本文共 1375 字,大约阅读时间需要 4 分钟。

GIF.gif

效果很简单,但是写起来真的不容易,因为Vue对于没有React这种前端框架经验的人是不友好的

(少吐槽,多工作,省下时间出去hi)

先说一下我走过的弯路:我之间想通过 v-if 指令去操作这一列

代码是这样的:

changeTxt 方法去改变 isAllTxt这个boolean 从而达到控制长短文字的显示

额,然后每次点击任意一行,这一列所有的文字都改变了

呃呃呃,这样产品绝对不会答应的,你以为是上课全体起立么???

好,我们用原来jquery时代开发的经验,在点击事件中传入 $(this) ,手动改dom

(前提是项目配置了jquery,请转头看:,上去,自己动。哦不,自己动手把它配好)
changeTxt($(this))

changeTxt(ref) {    ref.text(XXX);}

结果当然是错误:

1515406923(1).jpg
那底下就有同学说是不是jquery导错了???
当然也不是,这里的 this 并不是 domthis,是vuevm对象,不信的可以在方法中用jquery的 $ 试一下,并不是jquery的锅。

那又有爱思考的小伙伴说我用直接用 this 可以么 ?

changeTxt(this)
1515408683(1).jpg
得到的并不是当前元素的对象,这条路又不通。

那vue中是怎么得到元素的对象的呢???

给元素定义 ref

{
{getShortStr(scope.row.benchmark)}}

方法中通过 this.$refs['txt'].text(XXX) 改变dom,嗯?

1515409438(1).jpg
引用返回的是什么 ??? 没法操作啊 ,而且返回的这个标签是表格最后一行的数据,哇,乱七八糟,爆炸。

无奈,只能通过最笨的方法,给我们的 span 定义 id ,而且是不同的 id ,用 jquery 获取 id 对应的元素

// changeTxt方法: changeTxt(txt,id) { this.isAllTxt = !this.isAllTxt; if(this.isAllTxt){ $('#'+id).text(txt); }else{ $('#'+id).text(this.getShortStr(txt)); } }// getShortStr 方法getShortStr(txt_origin) { if(txt_origin.length > 20){ return txt_origin.substring(0,20); }else{ return txt_origin; }}

搞定是搞定了,但是 jqueryvue 的风格是不一样的,混用体验并不是很好,有好的方法请一定留言告诉我,必定送上一句 谢谢 !!!

转载地址:http://zwoso.baihongyu.com/

你可能感兴趣的文章
从头开始学JavaScript (十二)——Array类型
查看>>
重构——43添加参数(Add Parameter)
查看>>
类与对象 - PHP手册笔记
查看>>
谈一谈互联网创业补贴变味后的现象
查看>>
押宝在Apple Watch的智能手表游戏玩得转吗?
查看>>
MapGIS转Shp文件的单位问题
查看>>
Android零基础入门第42节:自定义BaseAdapter
查看>>
分析非结构化数据的10个步骤
查看>>
Python——循环
查看>>
串口传输文件 lrzsz
查看>>
网站架构的伸缩性设计
查看>>
谈谈Spring boot 启动层面的开发
查看>>
众说纷纭:NVMe over Fabrics阵列到底属不属于SAN?
查看>>
三个案例透析大数据思维的核心
查看>>
Linux 4.9内核终被“扶正”,落实说好的LTS待遇
查看>>
物联网时代的八大工业大数据应用场景
查看>>
数据库索引的实现原理
查看>>
Ovum观察:SDN/NFV大幅缩短新兴市场运营商服务上市时间
查看>>
探索数据中心采购决策之存储网络与云存储
查看>>
阿里云胡晓明:数据智能将为城市生活带来真正价值
查看>>