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实现仿QQ邮箱弹出确认框
Apr 29 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
详解react-router如何实现按需加载
Jun 15 Javascript
基于AngularJS的简单使用详解
Sep 10 Javascript
详解vue移动端日期选择组件
Feb 22 Javascript
浅谈Angular 的变化检测的方法
Mar 01 Javascript
vue.extend与vue.component的区别和联系
Sep 19 Javascript
小程序分页实践之编写可复用分页组件
Jul 18 Javascript
layui点击数据表格添加或删除一行的例子
Sep 12 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
Nov 06 Javascript
vue-cli设置css不生效的解决方法
Feb 07 Javascript
Vue-router中hash模式与history模式的区别详解
Dec 15 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
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
PHP操作路由器实现方法示例
2019/04/27 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
详细讲解JS节点知识
2010/01/31 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
每日十条JavaScript经验技巧(一)
2016/06/23 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
Python如何发布程序的详细教程
2018/10/09 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
利用python生成照片墙的示例代码
2020/04/09 Python
如何使用Pytorch搭建模型
2020/10/26 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
3分钟英语演讲稿
2014/04/29 职场文书
李开复演讲稿
2014/05/24 职场文书
消防安全宣传口号
2014/06/10 职场文书
春季运动会开幕词
2015/01/28 职场文书
撤诉书怎么写
2015/05/19 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis