跳转到内容

数据回传(controller实现)

数据回传(controller实现)

数据回传是当前视图的容器数据需要从下一个视图获取,即打开新的视图操作后,关闭后数据要回传给上一个容器。

常见场景:

  1. 当前页面需要对下一个列表视图某个字段数据进行汇总。

实现方式

  1. 当前页面的通过<Action label="选择" layout="Header" @action="choosePerson" />触发。
  2. choosePerson方法定义在controller文件中,通过触发triggerViewAction打开定义好的新视图,并在参数中配置payloadCallBack
  3. 在下一个视图action<PayloadAction label="确定" multi />将所选的数据以payloadCallBack参数,供上一个视图操作。

实现示例

  1. 当前页面视图定义

    <View>
    <Form title="部门人员编辑" key="person" model="trantor_doc_Person" lookupFrom="department.staff">
    <Fields>
    <Field name="name" />
    </Fields>
    <Actions>
    <Action label="选择" layout="Header" @action="choosePerson" />
    </Actions>
    </Form>
    </View>
  2. controller 文件定义

    import { Controller } from 'nusi-sdk'
    export default class extends Controller {
    choosePerson = () => {
    this.triggerViewAction('choosePerson', {
    openViewType: 'Dialog',
    payloadCallBack: (context) => {
    this.getContainerByKey('person').updateData({
    name: context.record.map(o => o.id).join(',')
    })
    }
    })
    }
    }
  3. 下一个视图定义

    <View>
    <Table title="人员选择" model="trantor_doc_Person">
    <Fields>
    <Field name="name" />
    <Field name="age" />
    <Field name="birthday" />
    </Fields>
    <Actions>
    <!-- 带回选中的数据 -->
    <PayloadAction label="确定" multi />
    </Actions>
    </Table>
    </View>