mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-11 18:42:56 +00:00
Merge branch 'develop' into fix/ts-error
This commit is contained in:
commit
bc6eb4a03a
@ -221,19 +221,22 @@ function parseExpression(a: any, b?: any, c = false) {
|
||||
thisRequired = c;
|
||||
}
|
||||
try {
|
||||
const contextArr = ['"use strict";', 'var __self = arguments[0];'];
|
||||
contextArr.push('return ');
|
||||
let tarStr: string;
|
||||
|
||||
tarStr = (str.value || '').trim();
|
||||
|
||||
let code = `"use strict"; function __wrapper(){ return ${tarStr}} return __wrapper.call(arguments[0])`;
|
||||
// NOTE: use __self replace 'this' in the original function str
|
||||
// may be wrong in extreme case which contains '__self' already
|
||||
tarStr = tarStr.replace(/this(\W|$)/g, (_a: any, b: any) => `__self${b}`);
|
||||
tarStr = contextArr.join('\n') + tarStr;
|
||||
|
||||
// 默认调用顶层窗口的parseObj, 保障new Function的window对象是顶层的window对象
|
||||
if (inSameDomain() && (window.parent as any).__newFunc) {
|
||||
return (window.parent as any).__newFunc(code)(self);
|
||||
}
|
||||
if (!thisRequired) {
|
||||
code = `with($scope){${code}}`;
|
||||
return (window.parent as any).__newFunc(tarStr)(self);
|
||||
}
|
||||
const code = `with(${thisRequired ? '{}' : '$scope || {}'}) { ${tarStr} }`;
|
||||
return new Function('$scope', code)(self);
|
||||
} catch (err) {
|
||||
logger.error(`${logScope || ''} parseExpression.error`, err, str, self?.__self ?? self);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user