功能分类: Data Applab JavaScript 少儿编程
指定 table
名称的表里,发生任何数据变化(create 数据新增、update 数据更新 或 delete 数据删除)就执行 callback
回调函数。
换句话说,onRecordEvent()
方法可以在任何表数据发生变化时实时通知 APP 应用,这样应用就可以实时地对这些变化进行处理。在事件触发时,一个 eventType
事件类型参数(create、update 或 delete)会被传递给回调函数。
includeAll
为可选参数,默认为 false。这个参数用来设置如果指定表中已有数据,是否因为这些之前已经存在的数据而触发 create 事件。默认为不触发。如果设置为 true,则会因为表中旧数据而触发 create 事件,即使这时候并没有新的数据被创建。
示例代码:更新图表 当检测到指定表里任何数据变化:added、updated 或 delete,更新页面上的图表。这样做可以使页面里的图表实时显示。运行下面代码之前,需要确保使用的名为 foodVotes 的数据表在 Applab 里已经存在。
// 当检测到指定表里任何数据变化:added、updated 或 delete,更新页面上的图表
onRecordEvent("foodVotes", function(record) {
drawChartFromRecords("votesChart", "bar", "foodVotes", ["name", "count"]);
});
示例代码:事件日志 监控指定表中的任何事件,并将触发情况根据 eventType 事件类型详细输出到日志里。运行下面代码之前,需要确保使用的名为 foodVotes 的数据表在 Applab 里已经存在。
onRecordEvent("foodVotes", function(record, eventType) {
if (eventType == 'create') {
console.log('A record for the food ' + record.name + ' was created');
} else if (eventType == 'update') {
console.log('The record for the food ' + record.name + ' was updated');
} else if (eventType == 'delete') {
console.log('The record for the food ' + record.name + ' was deleted');
}
});
示例代码:IncludeAll 参数 设置 includeAll 可选参数为 true。并且在 Applab 里通过创建一条已经存在的记录来触发它。运行下面代码之前,需要确保使用的名为 foodVotes 的数据表在 Applab 里已经存在。
textLabel("heading", "Everyone's favorite foods:");
onRecordEvent("fav_foods", function(record, eventType) {
if (eventType == 'create') {
write(record.name + "'s favorite food is " + record.food + ".");
}
}, true);
onRecordEvent(table, function(record, eventType) {
// 回调函数内代码
}, includeAll);
名称 | 类型 | 必需 | 参数描述 |
---|---|---|---|
table | string | Yes | 指定进行监控表的名称。 |
callback | function | Yes | 指定数据表中发生 create、 update 或 delete 操作后将被执行的回调函数。 |
includeAll | boolean | No | 可选。这个参数用来设置如果指定表中已有数据,是否因为这些之前已经存在的数据而触发 create 事件。默认为不触发。如果设置为 true,则会因为表中旧数据而触发 create 事件,即使这时候并没有新的数据被创建。 |
事件类型 | 事件描述 |
---|---|
"create" | 指定名称的表中,有新数据纪录被创建。 |
"update" | 指定名称的表中,有数据被更新。 |
"delete" | 指定名称的表中,有数据被删除。 |
没有返回值,会执行 callback 回调函数。
onRecordEvent
进行事件捕捉。否则可能发生无法预测的结果(如不一定那个事件触发器会被真正触发)。