在特定条件下取消删除记录

aki发表于:2017年02月22日 09:15:46更新于:2022年07月27日 10:39:59

开发者中心包含此范例模板(特定条件下取消删除记录),请前往开发者中心下载学习。

概要

本次介绍于2016年5月升级时(仅提供日文页面)添加的删除事件的取消功能。

以前,因为无法取消删除事件,无法通过JavaScript对删除进行控制。使用本次新增的功能,例如可以做这样的自定义:在没有经过删除可否判决的情况下不允许删除。

具有取消功能的删除事件有以下两个。

那么,接下来边写代码边试。

准备应用

可使用任意应用,但里面要包含以下字段。

字段名称字段类型字段代码项目与顺序
删除许可复选框delete_flag允许

00158afd877bafe0340f519a2ca5587

这样,应用准备就完成了。然后添加一条记录。

范例代码

那么,我们就来试一下。
本次升级后,对以下两个事件添加了取消删除的功能。

  • app.record.detail.delete.submit

  • app.record.index.delete.submit

只有在以上事件句柄内执行如下3个处理的时候可使用取消删除功能。

1. return false时
2. 给event.error设置错误信息,return event
3. 返回thenable的对象时,resolve(false)或者设置event.error后resolve(event)

这次的话是给第2个event.error设置错误信息然后return event。

(function() {    
    "use strict";    
    var events = ["app.record.detail.delete.submit", "app.record.index.delete.submit"];    
    kintone.events.on(events, function(event) {    
        var record = event["record"];    
        if (record["delete_flag"]["value"].length === 0) {    
            event.error = "删除操作未经允许!";    
            return event;    
        }    
    });    
})();

动作确认

那么,就把代码放到kintone进行运行看看吧。

在没有勾选“允许”字段的情况下,在记录详情页面按一下“删除”看看。

00158afdcbf1cff4aa733038bc98141

如果页面弹出错误信息,删除处理被取消的话,就表示成功了。

00158afd895b031a833343623b769d0

反之,在勾选“允许”的情况下删除看看。记录成功被删除了。

00158afd8bda6afdc5eda122bdd62a8

最后

虽然这次没有接触到Promise,但是如果在删除记录的同时,相关的记录也要一起删除时,使用错误处理(ErrorHandling)会比较容易吧。
请务必尝试一下。

本Tips在2016年5月版中确认过。