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 相关文章推荐
JS Map 和 List 的简单实现代码
Jul 08 Javascript
利用JQuery写一个简单的异步分页插件
Mar 07 Javascript
Javascript随机标签云代码实例
Jun 21 Javascript
微信小程序 action-sheet底部菜单详解
Oct 27 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
loading动画特效小结
Jan 22 Javascript
ionic环境配置及问题详解
Jun 27 Javascript
Angular之toDoList的实现代码示例
Dec 02 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
Oct 20 Javascript
Vue+Express实现登录状态权限验证的示例代码
May 05 Javascript
gulp构建小程序的方法步骤
May 31 Javascript
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 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
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
php 删除记录同时删除图片文件的实现代码
2010/05/12 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP可变变量学习小结
2015/11/29 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
理清apply(),call()的区别和关系
2011/08/14 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
机械设计专业应届生求职信
2013/11/21 职场文书
信息系统专业个人求职信范文
2013/12/07 职场文书
金榜题名主持词
2015/07/02 职场文书
2015年教师节广播稿
2015/08/19 职场文书
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang