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 相关文章推荐
Javascript 变量作用域 两个可能会被忽略的小特性
Mar 23 Javascript
Google的跟踪代码 动态加载js代码方法应用
Nov 12 Javascript
关于JavaScript与HTML的交互事件
Apr 12 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
Dec 20 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
Jul 19 jQuery
Angular开发实践之服务端渲染
Mar 29 Javascript
详解angular2如何手动点击特定元素上的点击事件
Oct 16 Javascript
JavaScript继承的特性与实践应用深入详解
Dec 30 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
Feb 27 Javascript
ES6中异步对象Promise用法详解
Jul 31 Javascript
vue中h5端打开app(判断是安卓还是苹果)
Feb 26 Vue.js
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
mysq GBKl乱码
2006/11/28 PHP
php 删除无限级目录与文件代码共享
2008/11/22 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
python的文件操作方法汇总
2017/11/10 Python
python tensorflow学习之识别单张图片的实现的示例
2018/02/09 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
linux面试题参考答案(8)
2015/08/11 面试题
优秀中专生推荐信
2013/11/17 职场文书
警察思想汇报
2014/01/04 职场文书
银行类自荐信
2014/02/04 职场文书
《桥》教学反思
2014/04/09 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
暑假打工感想
2015/08/07 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
Java 多态分析
2022/04/26 Java/Android