Message 全局提示

常用于主动操作后的反馈提示。与 Notification 的区别是后者更多用于系统级通知的被动提醒。

代码演示

基础用法

Win-design 注册了一个$Message方法用于调用,Message 可以接收一个字符串或一个 VNode 作为参数,它会被显示为正文内容。

查看代码 < />

<template>
  <w-button @click="messageShow">打开消息提示</w-button>
  <w-button @click="VNodeShow">VNode</w-button>
</template>

<script>
  export default {
    methods: {
      messageShow () {
        this.$Message('这是一条消息提示')
      },
      VNodeShow () {
        const h = this.$createElement
        this.$Message({
          message: h('p', null, [
            h('span', null, '内容可以是 '),
            h('i', {style: 'color: teal'}, 'VNode')
          ])
        })
      }
    }
  }
</script>

不同状态

用来显示「成功、警告、消息、错误」类的操作反馈。

查看代码 < />

<template>
  <section>
      <w-button v-for="item in messageList"
        :type="item.type"
        :key="item.type"
        @click="messageShow(item)">{{item.label}}</w-button>
  </section>
</template>
<script>
  export default {
    data () {
      return {
        messageList: [
          {
            label: '消息',
            message: '这是一条消息提示',
            type: 'info'
          },
          {
            label: '成功',
            message: '恭喜你,这是一条成功消息',
            type: 'success'
          },
          {
            label: '警告',
            message: '警告哦,这是一条警告消息',
            type: 'warning'
          },
          {
            label: '错误',
            message: '错了哦,这是一条错误消息',
            type: 'error'
          }
        ]
      }
    },
    methods: {
      messageShow (item) {
        this.$Message({
          message: item.message,
          type: item.type
        })
      }
    }
  }
</script>

查看代码 < />

<template>
  <w-button @click="showLoading">显示加载中...</w-button>
</template>
<script>
  export default {
    name: 'MMessageLoading',
    methods: {
      showLoading() {
        this.$Message({
          message: '显示加载中...',
          type: 'loading'
        });
      }
    }
  }
</script>
      

可关闭

可以添加关闭按钮。默认的 Message 是不可以被人工关闭的,如果需要可手动关闭的 Message,可以使用 showClose 字段。此外,和 Notification 一样,Message 拥有可控的 duration,设置 0 为不会被自动关闭,默认为 3000 毫秒。

查看代码 < />

<template>
  <w-button v-for="item in messageList"
    :key="item.type" :type="item.type"
    @click="messageShow(item)">{{item.label}}</w-button>
</template>

<script>
  export default {
    data () {
      return {
        messageList: [
          {
            label: '消息',
            message: '这是一条消息提示',
            type: 'info'
          },
          {
            label: '成功',
            message: '恭喜你,这是一条成功消息',
            type: 'success'
          },
          {
            label: '警告',
            message: '警告哦,这是一条警告消息',
            type: 'warning'
          },
          {
            label: '错误',
            message: '错了哦,这是一条错误消息',
            type: 'error'
          }
        ]
       }
      },
      methods: {
        messageShow (item) {
          this.$Message({
            message: item.message,
            showClose: true,
            type: item.type
          })
        }
    }
  }
</script>

文字居中

使用 center 属性让文字水平居中。

查看代码 < />

<template>
  <w-button @click="messageShow">文字居中</w-button>
</template>

<script>
  export default {
    methods: {
      messageShow () {
        this.$Message({
         message: 'Hi,我是居中的文字',
         center: true
        })
      }
    }
  }
</script>

WARNING

message 属性虽然支持传入 HTML 片段,但是在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击。因此在 dangerouslyUseHTMLString 打开的情况下,请确保 message 的内容是可信的,永远不要将用户提交的内容赋值给 message 属性。

支持html片段

使用HTML片段

message 属性支持传入 HTML 片段, 将 dangerouslyUseHTMLString 属性设置为 true,message 就会被当作 HTML 片段处理。

查看代码 < />

<template>
  <w-button @click="messageShow">使用Html片段</w-button>
</template>

<script>
  export default {
    methods: {
      messageShow () {
        this.$Message({
          dangerouslyUseHTMLString: true,
          message: '<strong>这是 <i>HTML</i> 片段</strong>'
        })
      }
    }
  }
</script>

全局方法

Win-design 为 Vue.prototype 添加了全局方法 $Message。因此在 vue instance 中可以采用本页面中的方式调用 Message 。

单独引入 Message :



import { Message } from 'win-design';

此时调用方法为 Message(options)。我们也为每个 type 定义了各自的方法,如 Message.success(options)。并且可以调用 Message.closeAll() 手动关闭所有实例。

API

Options

参数 说明 类型 可选值 默认值 Version
center 文字是否居中 Boolean — false
customClass 自定义类名 String — —
dangerouslyUseHTMLString 是否将 message 属性作为 HTML 片段处理 Boolean — false
duration 显示时间, 毫秒。设为 0 则不会自动关闭 Number — 3000
iconClass 自定义图标的类名,会覆盖 type String — —
message 消息文字 String / VNode — —
onClose 关闭时的回调函数, 参数为被关闭的 message 实例 Function — —
offset Message 距离窗口顶部的偏移量 Number — 20
showClose 是否显示关闭按钮 Boolean — false
type 主题 String success/warning/info/error info

Methods

调用 Message 或 this.$Message 会返回当前 Message 的实例。如果需要手动关闭实例,可以调用它的 close 方法。

方法名 说明 Version
close 关闭当前的 Message

贡献者

类型 参与者
设计者 UED视觉组
维护者 UED前端组
上次更新: 2/23/2021, 2:39:08 PM