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 学习小结(适合新手参考)
Jul 30 Javascript
jQuery 相关控件的事件操作分解
Aug 03 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
JS延迟加载加快页面打开速度示例代码
Dec 30 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
js实现左侧网页tab滑动门效果代码
Sep 06 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
Jun 28 Javascript
JavaScript、C# URL编码、解码总结
Jan 21 Javascript
JavaScript装饰器函数(Decorator)实例详解
Mar 30 Javascript
微信小程序 商城开发(ecshop )简单实例
Apr 07 Javascript
解决Vue+Element ui开发中碰到的IE问题
Sep 03 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实现下载功能的代码
2012/09/29 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python学习笔记_数据排序方法
2014/05/22 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
使用Python的PIL模块来进行图片对比
2016/02/18 Python
Python操作mongodb的9个步骤
2018/06/04 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
python生成并处理uuid的实现方式
2020/03/03 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
设计部经理的岗位职责
2013/11/16 职场文书
运动会入场解说词
2014/02/07 职场文书
安全演讲稿大全
2014/05/09 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers