fix(core,data-source): 事件参数中关联数据源字段无法自动更新
This commit is contained in:
@@ -18,7 +18,7 @@
|
||||
import { union } from 'lodash-es';
|
||||
|
||||
import type { AppCore } from '@tmagic/schema';
|
||||
import { getDepNodeIds, getNodes } from '@tmagic/utils';
|
||||
import { getDepNodeIds, getNodes, isPage } from '@tmagic/utils';
|
||||
|
||||
import DataSourceManager from './DataSourceManager';
|
||||
import type { ChangeEvent, DataSourceManagerData } from './types';
|
||||
@@ -66,7 +66,18 @@ export const createDataSourceManager = (app: AppCore, useMock?: boolean, initial
|
||||
node.condResult = dataSourceManager.compliedConds(node);
|
||||
}
|
||||
|
||||
return dataSourceManager.compiledNode(node);
|
||||
const newNode = dataSourceManager.compiledNode(node);
|
||||
|
||||
if (typeof app.page?.setData === 'function') {
|
||||
if (isPage(newNode)) {
|
||||
app.page.setData(newNode);
|
||||
} else {
|
||||
const n = app.page.getNode(node.id);
|
||||
n?.setData(newNode);
|
||||
}
|
||||
}
|
||||
|
||||
return newNode;
|
||||
}),
|
||||
sourceId,
|
||||
changeEvent,
|
||||
|
||||
@@ -15,6 +15,12 @@ import {
|
||||
|
||||
import type { AsyncDataSourceResolveResult, DataSourceManagerData } from './types';
|
||||
|
||||
/**
|
||||
* 编译数据源条件组
|
||||
* @param node dsl节点
|
||||
* @param data 数据源数据
|
||||
* @returns boolean
|
||||
*/
|
||||
export const compliedConditions = (node: MNode, data: DataSourceManagerData) => {
|
||||
if (!node.displayConds || !Array.isArray(node.displayConds) || !node.displayConds.length) return true;
|
||||
|
||||
@@ -56,6 +62,13 @@ export const updateNode = (node: MNode, dsl: MApp) => {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 创建迭代器容器编译的数据上下文
|
||||
* @param itemData 迭代数据
|
||||
* @param dsId 数据源id
|
||||
* @param fields dsl节点字段,如a.b.c
|
||||
* @returns 数据上下文
|
||||
*/
|
||||
export const createIteratorContentData = (itemData: any, dsId: string, fields: string[] = []) => {
|
||||
const data = {
|
||||
[dsId]: {},
|
||||
@@ -70,6 +83,15 @@ export const createIteratorContentData = (itemData: any, dsId: string, fields: s
|
||||
return data;
|
||||
};
|
||||
|
||||
/**
|
||||
* 编译通过tmagic-editor的数据源源选择器配(data-source-field-select)
|
||||
* 格式为 [`${DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX}${id}`, 'field']
|
||||
* DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX常量可通过@tmagic/utils获取
|
||||
*
|
||||
* @param value dsl节点中的数据源配置
|
||||
* @param data 数据源数据
|
||||
* @returns 编译好的配置
|
||||
*/
|
||||
export const compliedDataSourceField = (value: any, data: DataSourceManagerData) => {
|
||||
const [prefixId, ...fields] = value;
|
||||
const prefixIndex = prefixId.indexOf(DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX);
|
||||
@@ -87,6 +109,12 @@ export const compliedDataSourceField = (value: any, data: DataSourceManagerData)
|
||||
return value;
|
||||
};
|
||||
|
||||
/**
|
||||
* 编译通过tmagic-editor的数据源源选择器(data-source-input,data-source-select,data-source-field-select)配置出来的数据,或者其他符合规范的配置
|
||||
* @param value dsl节点中的数据源配置
|
||||
* @param data 数据源数据
|
||||
* @returns 编译好的配置
|
||||
*/
|
||||
export const compiledNodeField = (value: any, data: DataSourceManagerData) => {
|
||||
// 使用data-source-input等表单控件配置的字符串模板,如:`xxx${id.field}xxx`
|
||||
if (typeof value === 'string') {
|
||||
|
||||
Reference in New Issue
Block a user