事件处理的写法

aki发表于:2016年09月09日 15:24:31更新于:2023年04月07日 12:37:05

Index

事件处理的概要

在kintone上发生的各种各样的事件可通过绑定句柄来执行。

添加事件句柄

  • 可在PC专用版和移动端专用版中使用。

  • 可在所有页面(包括应用和空间)中使用。※但是,粘贴到空间正文里的应用不能用。

函数

kintone.events.on(type, handler)

属性

参数名要指定的值必须説明
type字符串或字符串的数组必须指定要绑定句柄的对象的事件类型或事件类型的数组。
handler函数必须

事件发生时要执行的句柄。type属性中包含事件类别,这在所有event中共通。

如在下面的事件的句柄内返回kintone.Promise对象※,将等待异步处理执行完后才开始执行之后的处理。

Promise对应事件

除字段值更改事件外,所有事件均支持Promise。

※kintone.Promise对象是带有then方法。
▼参考(外部网站)
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise

返回值

无。

程序范例

//执行事件句柄
var handler = function(event) {
    console.log(event);
};
kintone.events.on('app.record.index.show', handler);

删除事件句柄

  • 可在PC专用版和移动端专用版中使用。

  • 可在所有页面(包括应用和空间)中使用。※但是,粘贴到空间正文里的应用不能用。

函数

kintone.events.off(type, handler)

属性

参数名要指定的值必须説明
type字符串或字符串的数组可选指定要删除的事件句柄的事件类型、或事件类型的数组。
handler函数可选

要删除的事件句柄。指定与添加事件时相同的对象

  • 如要从指定的事件类型中删除指定句柄,请分别指定 type 和 handler 。

  • 如要从指定的事件类型中删除所有句柄,请仅指定 type 。 

  • 如要从所有事件类型中删除所有句柄,请省略 type 和 handler 的值。 

返回值

  • true:至少有一个删除成功时

  • false:没有找到任何要删除的事件句柄时

程序范例

var handler = function (event) {
  console.log(event);
};
kintone.events.on('app.record.index.show', handler);
// 从指定的事件类型中删除指定的句柄
kintone.events.off('app.record.index.show', handler);
// 从指定的事件类型中删除所有的句柄
kintone.events.off('app.record.index.show');
// 从所有的事件类型中删除所有的句柄
kintone.events.off();


注意事项

  • 截至2017年5月,应用的JavaScript文件将按以下顺序运行。

    同一个应用中,应用的JavaScript文件和插件的JavaScript文件同时存在时

    1. 应用程序的JavaScript文件

    2. 插件的JavaScript文件

  • 事件句柄只会被添加,不会被覆盖(这个是整个JavaScript的规格,使用kintone JavaScript API的时候也一样。)。
    如需要覆盖,要先删除已经设置过的事件句柄,然后再添加新的事件。

  • 如果同一个应用中有多个同名的类别,那么在以下“触发的事件”中返回包含属性“类别”的对象时可能会返回不符预期的类别。
    这种情况下,请先删除属性“类别”,再返回。

    • 记录列表页面
      ・app.record.index.edit.submit
      ・app.record.index.edit.change.<fieldCode>

    • 记录添加页面
      ・app.record.create.show
      ・app.record.create.submit
      ・app.record.create.change.<fieldCode>
      ・mobile.app.record.create.show
      ・mobile.app.record.create.submit
      ・mobile.app.record.create.change.<fieldCode>

    • 记录编辑页面
      ・app.record.edit.show
      ・app.record.edit.submit
      ・app.record.edit.change.<fieldCode>
      ・mobile.app.record.edit.show
      ・mobile.app.record.edit.submit
      ・mobile.app.record.edit.change.<fieldCode>

    • 记录详情页面
      ・app.record.detail.process.proceed