Skip to content
本页内容

实例

此章节假设你已经看过了渲染器。若你还不了解渲染器是什么,请先阅读该章节。

在扩展插件和扩展函数中,有时你会需要直接获取当前表单实例(Render Instance),它是一个已经实例化的渲染器。在 render 实例中,可以通过提供的函数获取或修改数据。切换表单,启动流程,触发事件,控件取值赋值等都可由其内部 api 触发。

关联

运行平台每一个表单内部都会生成一个独立的 render 实例,不同表单之间的渲染器实例是不相同的,他们只能存在父子关系(如由 openform 指令打开子表单),不存在兄弟上的联系。

下面是一些示例,帮助理解表单间关联:

  • 表单 A 打开了表单 B,那么称 AB 的父表单,反之则称之为子表单

  • 表单 A 启动了流程并且流程内打开了表单 B,此时 A 也同样是 B 的父表单

  • 表单 A 启动了流程并且流程内打开了表单 B,之后切换到了流程表单 C,此时 A 也是 C 的父表单,且 B 表单实例已被销毁(无法被访问)

来源

最常用的方式,在扩展插件内通过 Prop 获取:

ts
const props = defineProps<{
  render: CoRender
}>()
const props = defineProps<{
  render: CoRender
}>()

如果需要在深层次的子组件获取,通过 inject 更方便:

ts
const render = inject('render')
const render = inject('render')

示例

在渲染器实例中,最常用功能就是获取其他控件的当前值,假设我们在开发一表格插件,需要拿到一个名字叫 primary-ctrl 控件的值:

vue
<script lang="ts" scoped>
const props = defineProps<{
  render: CoRender
}>()

onMounted(() => {
  const id = props.render.getCtrlValue('primary-ctrl')

  // 通过获取到 id 初始化表单数据
  await axios.get('/api/table', { params: { id } })
})
</script>
<script lang="ts" scoped>
const props = defineProps<{
  render: CoRender
}>()

onMounted(() => {
  const id = props.render.getCtrlValue('primary-ctrl')

  // 通过获取到 id 初始化表单数据
  await axios.get('/api/table', { params: { id } })
})
</script>
通过实例 api 从表单获取控件值并初始化

参考: CoRenderIns API

Powerd by Vitepress.