import {BasicCustomerInstance, CustomerParams} from '../Controller'; import {actionCreators} from '../../Container/action'; import {compileExpressionString, isExpression} from '../../../util/vm'; import {store} from '../../../index'; import {parseExpressString} from '../../../parser/index'; export interface PassCustomerExecConfig { /** * 目标container组件的key */ model: string; /** * 写入的值 */ assign: Object | string; } export class PassCustomers implements BasicCustomerInstance { async exec(config: PassCustomerExecConfig, params: CustomerParams) { let targetContainerModel = config.model; let assign = config.assign; let { runTime } = params; let output; if (isExpression(targetContainerModel)) { targetContainerModel = parseExpressString(targetContainerModel, runTime); } if (typeof assign === 'string' && isExpression(assign)) { output = parseExpressString(assign, runTime); } else { output = compileExpressionString(assign, runTime); } if (!output) { console.error('pass output is not valid, please check your ExpressionString'); return; } store.dispatch(actionCreators.dataCustomerPass({ model: targetContainerModel, data: output })); return true; } }