alibaba / lowcode-engine

An enterprise-class low-code technology stack with scale-out design / 一套面向扩展设计的企业级低代码技术体系
https://lowcode-engine.cn
MIT License
14.66k stars 2.55k forks source link

appHelper添加的函数仅在渲染时有效,编辑面板无效,编辑面板是否有注入appHelper的方法 #1490

Closed avivadepp closed 1 year ago

avivadepp commented 1 year ago

其实最期望的是lowcode-plugin-code-editor添加默认函数的方式。
假设在reactrender的apphandler里添加了

utils: {test:()=>{console.log(test)}}

此时在编辑组件时绑定this.utils.test方法,预览时可以正常输出,但在编辑面板utils还是this._appContext里面的内容,所以test方法是undefined,两边表现不一致。
我看ctx里面也没有提供修改的方法。
目前想到的解决方案是 1,复制lowcode-plugin-code-editor代码自己写个plugin直接在里面添加utils 2,抄lowcode-plugin-code-editor里面的代码saveSchemaRef.current的代码,把code生成schema塞进最终生成的schema里面。
期待有更好的方式

alvarto commented 1 year ago

这个不应该 code-editor 出,因为 appHandler 不是 schema 自带的内容,code-editor 只应当完成对 schema 读写的内容。

  editorCabin.engineConfig.setConfig({
    appHelper: {
      utils: {
        test: () => void,
      },
    },
yz1311 commented 1 year ago

这个不应该 code-editor 出,因为 appHandler 不是 schema 自带的内容,code-editor 只应当完成对 schema 读写的内容。

  editorCabin.engineConfig.setConfig({
    appHelper: {
      utils: {
        test: () => void,
      },
    },

请问这个 editorCabin 可以在哪里获取?

我用初始化的ctx获取到的editorCabin并没有engineConfig对象

const { material, project } = ctx;
ctx.common.editorCabin
JackLian commented 1 year ago

appHelper是引擎初始化时候提供的,参考demo https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/index.ts#L112

yz1311 commented 1 year ago

appHelper是引擎初始化时候提供的,参考demo https://github.com/alibaba/lowcode-demo/blob/main/demo-general/src/index.ts#L112

可以了,请问有办法在模拟器中注入window全局对象吗? 譬如我想把moment对象挂载在全局下

JackLian commented 1 year ago

配置到资产包里