Hufe921 / canvas-editor

rich text editor by canvas/svg
https://hufe.club/canvas-editor-docs
MIT License
3.7k stars 553 forks source link

请问我在表格里添加的控件在使用executeSetControlValue去修改时会报错是什么原因呢 #884

Closed jianghuchaun-konan closed 5 days ago

jianghuchaun-konan commented 2 weeks ago

我设置了conceptId image 然后在controlChange的监听中使用executeSetControlValue修改 image 在表格之外的都可以正常修改,但是表格内部的修改就会报错如下图 image image 求大佬j解惑

Hufe921 commented 2 weeks ago

为什么要在controlChange设置控件数据?

jianghuchaun-konan commented 1 week ago

为什么要在controlChange设置控件数据?

我有一个场景,要在修改一个控件的时候将插入的所有相同的控件也同步去修改,因此我在controlChange拿到修改的控件的数据去设置所有相同控件的数据

Hufe921 commented 1 week ago

可以在控件失活的时候 再设置,不要立刻设置。

jianghuchaun-konan commented 1 week ago

可以在控件失活的时候 再设置,不要立刻设置。

请问有对应的api吗,可以拿到修改的数据吗

Hufe921 commented 1 week ago

优化controlChange,增加控件失活激活状态:

  instance.eventBus.on('controlChange', payload => {
    if (payload.state === ControlState.INACTIVE) {
      instance.command.executeSetControlValue({
        conceptId: payload.control?.conceptId,
        value: payload.control?.value || ''
      })
    }
  })
jianghuchaun-konan commented 1 week ago

好的,多谢大佬└(^o^)┘

jianghuchaun-konan commented 1 week ago

大佬,表格中删除控件内数据的时候会报错 1731929748737 1731929748759

jianghuchaun-konan commented 5 days ago

感觉修改后在失活时并没有监听到数据变化,修改后在失活时拿到的数据是空的如下图 image 1732181068270 1732181311704

另外还有一种情况是在修改第一个控件后立即去点击下一个控件就会报错 1732181382658

Hufe921 commented 5 days ago

确定是最新提交记录的代码?本地没有复现 /src/editor/core/draw/control/Control.ts=>initControl方法 截图一下

jianghuchaun-konan commented 4 days ago

确定是最新提交记录的代码?本地没有复现 /src/editor/core/draw/control/Control.ts=>initControl方法 截图一下

是最新的代码 image image

Hufe921 commented 4 days ago

部分旧代码,代码不完整

jianghuchaun-konan commented 21 hours ago

好的,是代码不完整,问题解决了,