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 相关文章推荐
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
Aug 19 Javascript
json的前台操作和后台操作实现代码
Jan 20 Javascript
js单例模式详解实例
Nov 21 Javascript
js加入收藏夹代码(兼容ie/ff/op)
May 16 Javascript
js实现分享到随页面滚动而滑动效果的方法
Apr 10 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
Aug 18 Javascript
jquery  实现轮播图详解及实例代码
Oct 12 Javascript
80%应聘者都不及格的JS面试题
Mar 21 Javascript
使用JavaScript实现alert的实例代码
Jul 06 Javascript
React 子组件向父组件传值的方法
Jul 24 Javascript
vue的滚动条插件实现代码
Sep 07 Javascript
react组件基本用法示例小结
Apr 27 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编程网上资源导航
2006/10/09 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
python实现简单的TCP代理服务器
2014/10/08 Python
Python中input和raw_input的一点区别
2014/10/21 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
Python使用pyserial进行串口通信的实例
2019/07/02 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
使用IPython或Spyder将省略号表示的内容完整输出
2020/04/20 Python
Python 解决相对路径问题:"No such file or directory"
2020/06/05 Python
Python实现异步IO的示例
2020/11/05 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
澳大利亚领先的皮肤诊所:Skin Matrix(抗衰老、痤疮专家、药妆护肤)
2018/05/20 全球购物
weblogic面试题
2016/03/07 面试题
《最后的姿势》教学反思
2014/02/27 职场文书
销售总经理岗位职责
2014/03/15 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle