更新时间:2024-05-21 GMT+08:00
分享

组件自定义事件实现

组件之间的交互,主要包括组件自定义事件和组件响应动作,本章节将为您介绍组件自定义事件的实现方式。自定义事件是指组件作为触发器,当用户操作组件(比如下拉框选中选项)时发出的事件。

注册自定义事件

自定义事件在{widget}.editor.js文件中的eventConfig配置项中注册,以global_SelectWidget组件为例:

  • 在文件global_SelectWidget.editor.js中定义事件
    eventConfig: {
        sendSelect: {
          desc: { zh_CN: "当选中选项时", en_US: "Select Choose" },
          fields: [
            {
              name: "selectValue",
              desc: { zh_CN: "选项值", en_US: "Select Choose" },
            },
          ],
        },
      },
  • 在文件global_SelectWidget.js的init钩子中注册事件
    * @params thisObj: 组件实例,等同于this
    * @params "sendSelect": 事件key值
    * @params { "zh_CN": "当选中选项时", "en_US": "Select Choose" }: 事件描述,国际化
    * @params []: 空数组,固定写法 (内部组件暂时没有用到过)
    */
    Studio.registerEvents(thisObj, "sendSelect", { "zh_CN": "当选中选项时", "en_US": "Select Choose" }, []);
图1 配置后效果
表1 eventConfig字段说明

字段

类型

说明

sendSelect

String

自定义事件的key值。

desc

Object

自定义事件的中英文描述。

fields

Array

自定义事件中,暴露给全局变量的内容。

触发自定义事件

  • 在文件global_SelectWidget.ftl文件中,监听el-select的change事件
    <el-select v-model="selectConfObj.selectValue" :disabled="selectConfObj.disabled" :popper-append-to-body="false"
               @change="search"
               clearable
               :placeholder="selectConfObj.placeholder" filterable popper-class="selectWidget">
        <el-option v-for="item in selectConfObj.options" :key="item.value" :label="item.label" :value="item.value">
        </el-option>
    </el-select>
  • 在文件global_SelectWidget.js中,触发自定义事件
    search: function () {
        // 拼装事件参数
        const params = {
            selectValue: this.selectConfObj.selectValue
        };
        // 触发自定义事件
        thisObj.triggerEvent("sendSelect", params);
    },

全局变量

组件触发自定义事件时,可以给全局变量赋值,fields数组中每一个对象保存着暴露给全局变量的详细配置。

图2 给全局变量赋值
表2 fields数组中对象字段详细说明

字段

类型

说明

name

String

key值。

desc

Object

字段描述,需要国际化。

暴露给全局变量的字段,一定要在触发事件参数中定义,如图3

图3 定义字段
分享:

    相关文档

    相关产品