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和svg实现超炫酷的动画特效
Dec 09 Javascript
详解JavaScript的Date对象(制作简易钟表)
Apr 07 Javascript
JQuery在循环中绑定事件的问题详解
Jun 02 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
JS验证字符串功能
Feb 22 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
Sep 20 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 Javascript
详解使用webpack打包编写一个vue-toast插件
Nov 08 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
Sep 12 Javascript
详解js获取video任意时间的画面截图
Apr 17 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
Mar 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
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
利用Node.js批量抓取高清妹子图片实例教程
2018/08/02 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
python实现将汉字保存成文本的方法
2018/11/16 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
DOUGLAS波兰:在线销售香水和化妆品
2020/07/05 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
推荐信怎么写
2014/05/09 职场文书
公司应聘自荐书
2014/06/14 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript