如何用Vue和Element-UI自定义Notification按钮实现关闭功能?

2026-04-08 20:231阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计949个文字,预计阅读时间需要4分钟。

如何用Vue和Element-UI自定义Notification按钮实现关闭功能?

使用Vue和Element-UI的Notification自定义按钮实现关闭功能及处理多个通知:

在Vue组件中,可以通过Element-UI的Notification组件来显示通知消息。以下是如何自定义一个按钮来关闭特定通知,以及如何处理多个通知的情况。

首先,确保已经在项目中引入了Element-UI。

显示通知 关闭通知

在上述代码中,我们定义了两个方法:`openNotification`和`closeNotification`。

- `openNotification`方法用于打开一个通知,并返回一个通知ID。我们将这个ID存储在组件的`data`中,以便之后可以关闭它。- `closeNotification`方法用于关闭特定ID的通知。我们通过传递存储的通知ID给`Notification.close`方法来实现。

关于处理多个通知的问题,Element-UI的Notification组件默认会按照打开的顺序显示通知,并且每个通知都有一个唯一的ID。这意味着你可以为每个通知分配一个唯一的ID,并在需要时关闭它们。

如果通知数量很多,确实可能会遇到操作空间不足的问题。在这种情况下,可以考虑以下策略:

1. 限制通知数量:只显示最新的几个通知,旧的自动关闭或手动关闭。

2.分页显示:将通知分页显示,每次只显示一页。

3.自定义通知样式:调整通知的样式,使其更适合小屏幕或空间受限的环境。

这样,你就可以有效地使用Element-UI的Notification组件来管理多个通知,同时保持良好的用户体验。

vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知

使用element-ui中的Notification,只有一个message属性是有很大的操作空间,其余的都是写死的,无法进行扩展,达不到想要的效果。所以只能在message上下功夫。

在element-ui官方文档中可以看到Notification中的message属性是可以处理VNode的所以我们可以使用VNode来达到我们需要的效果。

如何关闭通知呢?

当创建通知的时候,会返回该通知的实例,通过该实例的close方法可以将通知关闭。

那么当有多个通知显示在屏幕上时,如何关闭特定弹窗的呢?

创建一个字典,字典的key是message的Id,value是显示该消息的通知的实例。从而可以关闭特定的通知。代码如下。

如何用Vue和Element-UI自定义Notification按钮实现关闭功能?

import mainTable from './mixin/mainTable'; import systemMenu from './template/system-menu'; import headerRow from './template/header'; export default { name: 'xxxxx', data() { return { //使用messageId作为弹窗的key,用来获取弹窗的实例,以对对应弹窗进行操作 notifications: {} }; }, mounted() { this.$messageWebsocket.websocketApi.initWebSocket(this.$store.state.login.userInfo.userInfo.id, this.openMessageTips); }, methods: { //关闭单个通知 closeNotification(id, operateCode, message){ this.notifications[message.messageId].close(); delete this.notifications[message.messageId]; }, //关闭所有通知 closeAllNotification(){ let _this = this; for (let key in _this.notifications) { _this.notifications[key].close(); delete _this.notifications[key]; } }, //打开一个新的通知 openMessageTips(message){ let _this = this; this.closeAllNotification(); let notify = this.$notify({ title: '三高协诊消息', position: 'bottom-right', showClose: false, dangerouslyUseHTMLString: true, message: this.$createElement('div', null, [ this.$createElement('div', null, [this.$createElement('span', null, message.content)]), this.$createElement('div', null, [ this.$createElement( 'button', { style: { padding: '10px 18px', margin: '10px 12px 0px 2px', textAlign: 'center', textDecoration: 'none', display: 'inline-block', webkitTransitionDuration: '0.4s', transitionDuration: '0.4s', cursor: 'pointer', backgroundColor: 'white', color: 'black', border: '2px solid #e7e7e7', }, on: { mouseout: function(e){ e.target.style.backgroundColor = 'white'; }, mouseover: function(e){ e.target.style.backgroundColor = '#e7e7e7' }, click: _this.closeNotification.bind(_this, 1, 1, message) } }, "查看" ), this.$createElement( 'button', { style: { padding: '10px 18px', margin: '10px 2px 0px 12px', textAlign: 'center', textDecoration: 'none', display: 'inline-block', webkitTransitionDuration: '0.4s', transitionDuration: '0.4s', cursor: 'pointer', backgroundColor: 'white', color: 'black', border: '2px solid #e7e7e7', }, on: { //鼠标移出的回调 mouseout: function(e){ e.target.style.backgroundColor = 'white'; }, //鼠标移入的回调 mouseover: function(e){ e.target.style.backgroundColor = '#e7e7e7' }, click: _this.closeNotification.bind(_this, 1, 2, message) } }, "稍后提醒(五分钟后)" ) ] ) ] ), duration: 0, }); //将messageId和通知实例放入字典中 this.notifications[message.messageId] = notify; } } };

总结

以上所述是小编给大家介绍的vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

标签:Notificat

本文共计949个文字,预计阅读时间需要4分钟。

如何用Vue和Element-UI自定义Notification按钮实现关闭功能?

使用Vue和Element-UI的Notification自定义按钮实现关闭功能及处理多个通知:

在Vue组件中,可以通过Element-UI的Notification组件来显示通知消息。以下是如何自定义一个按钮来关闭特定通知,以及如何处理多个通知的情况。

首先,确保已经在项目中引入了Element-UI。

显示通知 关闭通知

在上述代码中,我们定义了两个方法:`openNotification`和`closeNotification`。

- `openNotification`方法用于打开一个通知,并返回一个通知ID。我们将这个ID存储在组件的`data`中,以便之后可以关闭它。- `closeNotification`方法用于关闭特定ID的通知。我们通过传递存储的通知ID给`Notification.close`方法来实现。

关于处理多个通知的问题,Element-UI的Notification组件默认会按照打开的顺序显示通知,并且每个通知都有一个唯一的ID。这意味着你可以为每个通知分配一个唯一的ID,并在需要时关闭它们。

如果通知数量很多,确实可能会遇到操作空间不足的问题。在这种情况下,可以考虑以下策略:

1. 限制通知数量:只显示最新的几个通知,旧的自动关闭或手动关闭。

2.分页显示:将通知分页显示,每次只显示一页。

3.自定义通知样式:调整通知的样式,使其更适合小屏幕或空间受限的环境。

这样,你就可以有效地使用Element-UI的Notification组件来管理多个通知,同时保持良好的用户体验。

vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知

使用element-ui中的Notification,只有一个message属性是有很大的操作空间,其余的都是写死的,无法进行扩展,达不到想要的效果。所以只能在message上下功夫。

在element-ui官方文档中可以看到Notification中的message属性是可以处理VNode的所以我们可以使用VNode来达到我们需要的效果。

如何关闭通知呢?

当创建通知的时候,会返回该通知的实例,通过该实例的close方法可以将通知关闭。

那么当有多个通知显示在屏幕上时,如何关闭特定弹窗的呢?

创建一个字典,字典的key是message的Id,value是显示该消息的通知的实例。从而可以关闭特定的通知。代码如下。

如何用Vue和Element-UI自定义Notification按钮实现关闭功能?

import mainTable from './mixin/mainTable'; import systemMenu from './template/system-menu'; import headerRow from './template/header'; export default { name: 'xxxxx', data() { return { //使用messageId作为弹窗的key,用来获取弹窗的实例,以对对应弹窗进行操作 notifications: {} }; }, mounted() { this.$messageWebsocket.websocketApi.initWebSocket(this.$store.state.login.userInfo.userInfo.id, this.openMessageTips); }, methods: { //关闭单个通知 closeNotification(id, operateCode, message){ this.notifications[message.messageId].close(); delete this.notifications[message.messageId]; }, //关闭所有通知 closeAllNotification(){ let _this = this; for (let key in _this.notifications) { _this.notifications[key].close(); delete _this.notifications[key]; } }, //打开一个新的通知 openMessageTips(message){ let _this = this; this.closeAllNotification(); let notify = this.$notify({ title: '三高协诊消息', position: 'bottom-right', showClose: false, dangerouslyUseHTMLString: true, message: this.$createElement('div', null, [ this.$createElement('div', null, [this.$createElement('span', null, message.content)]), this.$createElement('div', null, [ this.$createElement( 'button', { style: { padding: '10px 18px', margin: '10px 12px 0px 2px', textAlign: 'center', textDecoration: 'none', display: 'inline-block', webkitTransitionDuration: '0.4s', transitionDuration: '0.4s', cursor: 'pointer', backgroundColor: 'white', color: 'black', border: '2px solid #e7e7e7', }, on: { mouseout: function(e){ e.target.style.backgroundColor = 'white'; }, mouseover: function(e){ e.target.style.backgroundColor = '#e7e7e7' }, click: _this.closeNotification.bind(_this, 1, 1, message) } }, "查看" ), this.$createElement( 'button', { style: { padding: '10px 18px', margin: '10px 2px 0px 12px', textAlign: 'center', textDecoration: 'none', display: 'inline-block', webkitTransitionDuration: '0.4s', transitionDuration: '0.4s', cursor: 'pointer', backgroundColor: 'white', color: 'black', border: '2px solid #e7e7e7', }, on: { //鼠标移出的回调 mouseout: function(e){ e.target.style.backgroundColor = 'white'; }, //鼠标移入的回调 mouseover: function(e){ e.target.style.backgroundColor = '#e7e7e7' }, click: _this.closeNotification.bind(_this, 1, 2, message) } }, "稍后提醒(五分钟后)" ) ] ) ] ), duration: 0, }); //将messageId和通知实例放入字典中 this.notifications[message.messageId] = notify; } } };

总结

以上所述是小编给大家介绍的vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

标签:Notificat