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的函数、创建对象、封装、属性和方法、继承
Mar 10 Javascript
浅析JavaScript原型继承的陷阱
Dec 03 Javascript
WebSocket实现简单客服聊天系统
May 12 Javascript
BootStrap表单控件之文本域textarea
May 23 Javascript
Vue实现购物车场景下的应用
Nov 27 Javascript
微信小程序实现分享到朋友圈功能
Jul 19 Javascript
JavaScript实用代码小技巧
Aug 23 Javascript
解决layer.confirm快速点击会重复触发事件的问题
Sep 23 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
Sep 24 Javascript
vue-父子组件和ref实例详解
Nov 10 Javascript
详解Vue之计算属性
Jun 20 Javascript
vant中的toast层级改变操作
Nov 04 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+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
chrome原生方法之数组
2011/11/30 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
python开发之for循环操作实例详解
2015/11/12 Python
Python pymongo模块用法示例
2018/03/31 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
大学毕业生通用求职信
2013/09/28 职场文书
小学生综合素质评语
2014/04/23 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS
使用Ajax实现无刷新上传文件
2022/04/12 Javascript