logologo
开始
手册
开发
插件
API
首页
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
开始
手册
开发
插件
API
首页
logologo
RunJS 概述
导入模块
容器内渲染

全局变量

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Next PageRunJS 概述

#SingleRecordResource

面向单条记录的 Resource:数据为单条对象,支持按主键获取、创建/更新(save)与删除。适用于详情、表单等“单条记录”场景。

继承关系:FlowResource → APIResource → BaseRecordResource → SingleRecordResource。具备 APIResource 的请求能力,并在此基础上扩展资源名、主键与 save/destroy。

创建方式:ctx.makeResource('SingleRecordResource') 或 ctx.initResource('SingleRecordResource')。使用前需 setResourceName('集合名'),按主键操作时需 setFilterByTk(id)。


#资源名与主键

方法说明
setResourceName(name) / getResourceName()资源名,如 'users'、'users.profile'
setSourceId(id) / getSourceId()关联资源时的父记录 ID
setDataSourceKey(key) / getDataSourceKey()数据源标识
setFilterByTk(tk) / getFilterByTk()当前记录主键;设置后 isNewRecord 为 false

#状态

属性/方法说明
isNewRecord是否为“新建”状态(未设置 filterByTk 或新创建时为 true)

#请求参数(筛选 / 字段)

方法说明
setFilter(filter) / getFilter()筛选(非新建时可用)
setFields(fields) / getFields()请求字段
setAppends(appends) / getAppends() / addAppends / removeAppends关联展开

#CRUD

方法说明
refresh()按当前 filterByTk 请求 get,更新 getData();若为新建态则不请求
save(data, options?)新建时调 create,否则调 update;可选 { refresh: false }
destroy(options?)按当前 filterByTk 删除,并清空本地数据
runAction(actionName, options)调用任意资源 action

#配置与事件

方法说明
setSaveActionOptions(options)save 时的请求配置
on('refresh', fn) / on('saved', fn)刷新完成、保存后触发

#示例

ctx.initResource('SingleRecordResource');
ctx.resource.setResourceName('users');
ctx.resource.setFilterByTk(1);
await ctx.resource.refresh();
const user = ctx.resource.getData();

// 更新
await ctx.resource.save({ name: '李四' });

// 新建:不设 filterByTk,直接 save
const newRes = ctx.makeResource('SingleRecordResource');
newRes.setResourceName('users');
await newRes.save({ name: '王五' });