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实现大数的运算
Nov 24 Javascript
简易的投票系统以及js刷票思路和方法
Apr 07 Javascript
javascript实现简单查找与替换的方法
Jul 22 Javascript
jQuery实现简洁的导航菜单效果
Nov 23 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
Jul 22 Javascript
JS刷新父窗口的几种方式小结(推荐)
Nov 09 Javascript
angular2+node.js express打包部署的实战
Jul 27 Javascript
Angular4开发解决跨域问题详解
Aug 28 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
Vue项目实现简单的权限控制管理功能
Jul 17 Javascript
Vue中对iframe实现keep alive无刷新的方法
Jul 23 Javascript
使用js实现单链解决前端队列问题的方法
Feb 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获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php foreach循环中使用引用的问题
2013/11/06 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
异步加载script的代码
2011/01/12 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
Python实现的桶排序算法示例
2017/11/29 Python
python 字符串只保留汉字的方法
2018/11/16 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
python能在浏览器能运行吗
2020/06/17 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
adidas泰国官网:adidas TH
2020/07/11 全球购物
委托书范本
2014/04/02 职场文书
群众路线调研报告范文
2014/11/03 职场文书
新党章的学习心得体会
2014/11/07 职场文书