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中变量提升 Hoisting
Jul 03 Javascript
javascript闭包的高级使用方法实例
Jul 04 Javascript
AngularJS基础学习笔记之表达式
May 10 Javascript
深入浅析JavaScript中对事件的三种监听方式
Sep 29 Javascript
详解js树形控件—zTree使用总结
Dec 28 Javascript
Bootstrap select下拉联动(jQuery cxselect)
Jan 04 Javascript
jquery.cookie.js的介绍与使用方法
Feb 09 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
Apr 21 Javascript
Vue实现左右菜单联动实现代码
Aug 12 Javascript
对layui中的onevent 和event的使用详解
Sep 06 Javascript
JS面向对象编程实现的拖拽功能案例详解
Mar 03 Javascript
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 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
php 设计模式之 工厂模式
2008/12/19 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
用javascript实现自定义标签
2007/05/08 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
Vue2单一事件管理组件通信
2017/05/09 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python实现partial改变方法默认参数
2014/08/18 Python
Python实现测试磁盘性能的方法
2015/03/12 Python
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
Python3实现从文件中读取指定行的方法
2015/05/22 Python
python集合用法实例分析
2015/05/30 Python
Python中字典和集合学习小结
2017/07/07 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
什么是设计模式
2012/06/17 面试题
质量承诺书格式
2014/05/20 职场文书
公司活动总结怎么写
2014/06/25 职场文书
北京天坛导游词
2015/02/12 职场文书