详解关于vue-area-linkage走过的坑

Galatea ·
更新时间:2024-11-15
· 646 次阅读

最近写的项目是vue框架,搭配element-ui框架。这个框架上手快,而且页面的大部分样式都有现成的可以用,使用起来比较方便。前几天有一个需求是要写省市区联动选择,上网搜罗了一遍之后发现了vue-area-linkage这个插件,应该是专门为vue准备的插件,下面开始介绍这个插件的使用方法。

官网介绍的很详细了,我就不赘述了vue-area-linkage 安装及使用方法。

插件使用之后的样子

下面开始介绍遇到的坑以及解决办法:

1.样式问题:

这个问题比较好解决,去到依赖包中,查找css文件,找到对应的元素修改样式即可。因为我的是全局都要修改样式,所以我直接在依赖包中改。如果不是全局要改的样式,只是某个页面需要的样式就要在自己的css文件里面单独改,避免全局污染。

修改全局样式的文件

2.打包时出现 “Module not found: Error: Cant`t resolve 'vue-area-linkage/dist/index.css' in '/app/src/views/devcie'”

在 main.js 中全局注入文件,然后再在文件中注入:

main.js 中注入

文件中注入

3.有需求是新增和编辑,我写的逻辑是一套代码,控制显示隐藏,此为背景。出现的问题是,如果先点击编辑,会直接显示接口返回的地址,然后再点击新增,还会显示刚刚编辑的地址,即使清除 v-model 绑定的数据也清除不掉显示的内容(坑)。

下面开始讲述我的踩坑之路:

既然一套代码不行,那就两套代码咯。立马复制粘贴,what f***,这代码也太多了,而且逻辑还得改,保存还得改,果断放弃。对自己还得有点要求才行。

那要不新增的时候重置这个置,于是把值置为空,不好使;那要不控制一下 placeholder,不好使;使用jq控制一下 placeholder , 不好使,果断放弃。

那要不看看源码。看到了源码,找到了对应的方法 area_cascader_render , debugger 之后,发现在进入页面的时候会渲染一下页面,然后就不会继续渲染了,不渲染,那值自然就是之前的值。思考了一下,想到如果我在保存或者返回页面的时候销毁这个组件,然后在新增的时候不就可以重新渲染了吗,于是果断 v-if ,保存返回的时候置为false,新增置为true,完美解决,下班。



VUE area

需要 登录 后方可回复, 如果你还没有账号请 注册新账号