Vue 解决在element中使用$notify在提示信息中换行问题


Posted in Javascript onNovember 11, 2020

在项目开发过程中,遇到如下用户体验提升需求:需要实现错误提示时根据后台返回错误列表信息,换行展示。

实现方式如下:

通过F12元素查看,在对应的样式中加入white-space:pre-wrap,该样式的主要作用是识别字符串中的换行符"\n",故需要在待展示的信息字符串中加入相应的换行标识符。

在$notify消息提示中,作用于el-notification:

.el-notification {white-space:pre-wrap !important; }

有的童鞋可能试过样式white-space:pre,此时会出现的若提示信息内容较长时显示不齐全的问题。

即使使用自动换行样式(也无效):

/*设置内容超出后自动换行*/
word-wrap: break-word;
word-break: break-all;

具体区别可参加以下参数部分。

Vue 解决在element中使用$notify在提示信息中换行问题

Vue 解决在element中使用$notify在提示信息中换行问题

Vue 解决在element中使用$notify在提示信息中换行问题

补充知识:关于vue ts项目同时引入element-ui和ant-design,ts报错不能编译的解决方法。

vue ts版本同时引入ant和element不能打包。

Subsequent property declarations must have the same type. Property ‘$confirm' must be of type ‘(modalOptios: ModalOptions) => ModalConfirm', but here has type ‘ElMessageBoxShortcutMethod'.

Subsequent property declarations must have the same type. Property ‘$message' must be of type ‘Message', but here has type ‘ElMessage'.

通常vue项目只会用到一个ui库,但是往往会有一些特殊场景一个ui库不满足我们业务场景,我工作中使用到了ant-design-vue(全局引入)和element-ui(按需加载),同时项目是ts版本。

Vue 解决在element中使用$notify在提示信息中换行问题

elemt,ant ts报错

我搜索了很多的解决方案,都不符合,我发现它爆错的地方是两个的类型描述文件冲突了,这时候我把node_modules/element-ui/types/message-box.d.ts 和 node_modules/element-ui/types/message.d.ts 相关地方注释后再打包果然不报错了。

Vue 解决在element中使用$notify在提示信息中换行问题

Vue 解决在element中使用$notify在提示信息中换行问题

既然能通过注释的方式解决打包的问题,但是我们不能每次都去注释一次,这时候马上想到node的 fs包能帮我友好解决这个问题。

解决方案:

在项目根目录创建 config文件夹、os.js文件

Vue 解决在element中使用$notify在提示信息中换行问题

编写os.js文件,如下

/**
 * 这个文件在这是为了解决同时引入element-ui / ant-design ts 爆粗哦,
 * 解决版本把node_modules 相关文件注释了
 * */

let fs = require('fs')
let path = require('path')

let src1 = '../node_modules/element-ui/types/message.d.ts'
annotation(src1, '$message: ElMessage')
let src2 = '../node_modules/element-ui/types/message-box.d.ts'
annotation(src2, '$confirm: ElMessageBoxShortcutMethod')

function annotation(src, params) {
  fs.readFile(path.resolve(__dirname, src), 'utf8', function(err, files) {
    if (!err && files !== '') {
      let val = params
      let has = `// ${params}`
      let start = files.indexOf(val)
      let start2 = files.indexOf(has)
      if (start > -1 && start2 === -1) {
        var result = files.replace(val, has)
        fs.writeFile(
          path.resolve(__dirname, src),
          result,
          'utf8',
          function(err) {
            if (err) {
              console.log(err)
            }
          }
        )

        console.log(params + ' 注释成功!')
      } else {
        console.log('没有需要注释对或者已经注释了!')
      }
    } else {
      console.log(
        params + ' 没有需要注释对或者已经注释了或者注释文件失败!'
      )
    }
  })
}

原来的命令,我们只需要修改build部分

编写package.json运行命令,把我们编写的os.js加入到运行命令

"scripts": {
    "build": "node config/os.js&vue-cli-service build"
  },

现在运行npm run build

Vue 解决在element中使用$notify在提示信息中换行问题

大功告成!

以上这篇Vue 解决在element中使用$notify在提示信息中换行问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
避免 showModalDialog 弹出新窗体的原因分析
May 31 Javascript
深入理解JavaScript系列(13) This? Yes,this!
Jan 18 Javascript
js模仿html5 placeholder适应于不支持的浏览器
Jan 13 Javascript
javascript中的原型链深入理解
Feb 24 Javascript
Active控件问题小结(附解决办法)
Jun 09 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
Oct 08 Javascript
Three.js开发实现3D地图的实践过程总结
Nov 20 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
Vue 路由 过渡动效 数据获取方法
Jul 31 Javascript
微信小程序性能优化之checkSession的使用
Mar 06 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
Jun 24 Javascript
JavaScript常用进制转换及位运算实例解析
Oct 14 Javascript
vue 实现element-ui中的加载中状态
Nov 11 #Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
Nov 11 #Javascript
JS前端基于canvas给图片添加水印
Nov 11 #Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
Nov 11 #Javascript
使用Vant完成Dialog弹框案例
Nov 11 #Javascript
vue实现lodop打印功能的示例
Nov 11 #Javascript
解决vant的Toast组件时提示not defined的问题
Nov 11 #Javascript
You might like
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
JavaScript 全角转半角部分
2009/10/28 Javascript
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
JavaScript表达式:URL 协议介绍
2013/03/10 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
使用jQuery的attr方法来修改onclick值
2014/07/07 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
jQuery Validate初步体验(一)
2015/12/12 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
Python实现的金山快盘的签到程序
2013/01/17 Python
python微信公众号开发简单流程
2018/03/23 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
优秀医生事迹材料
2014/02/12 职场文书
六个一活动实施方案
2014/03/21 职场文书
实习协议书范本
2014/09/25 职场文书
婚内房产协议书范本
2014/10/02 职场文书
暑期实践个人总结
2015/03/06 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
详解Django的MVT设计模式
2021/04/29 Python