-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add plugin function transaction
#9172
Comments
input 中有大量的业务逻辑在里面,很多是涉及用户输入的,如果触发的话可能会造成原有输入业务错误。需要保存数据的话可以单独提供接口。 |
简单来讲就是需要一个在前端更改 html 内容、相应的更改可以直接同步到后端的方案。目前后端只给了一次性 update 一个 block 的方法。但是如果我只是想要更改一小部分,那就不得不为了一小部分的更改绕一大圈。 比如我给的例子,他的功能是「点击链接后,fetch 对应的 url 并根据将链接锚文本设置对应 url 网页的 title」 |
图中给的 updateProtyle 这个通过 dispatch 自定义 Event 的方案,是我发现前端在更改了 html 标签内容后,只要在那个块上随便编辑两下就能保留之前的更改,于是根据这个特点设计的。 那么遵照这个思路——也许可以单独设置一个接口,把当前对前端的更改同步到后端? |
这里有一个撤销的问题,所以需要按照你上面的 1-4 进行操作。如果提供接口的话,还是需要经过 1 后才能调用接口。 |
那能否增加一个接口,传入protyle和id之后,就能转发对应的内容更改到后端? 也可以在protyle里增加一个方法,这样传入id就行。 当然,能传dom也可以。 |
就是换一个思路,不在和用户争抢 input 事件了,单独做一个接口出来以达成在前端更改 html 内容、相应的更改可以直接同步到后端的目的。 |
但是这个接口最终下来还是和调用 API update block 的过程一样,避免不了步骤。除非不需要做 undo |
插件行为本来也没有什么 undo 的需求吧。这个本来就是给插件的一个功能糖,也许 update block 可以做到一样的功能,但是这个显然更加方便快捷。 |
这样的话接口什么样比较合适呢? 下面这个可以不?
|
能把 transaction 这么大一个接口放出来当然很高兴啦,不过这个接口功能也太全了,不知道要怎么用。。。 siyuan/app/src/protyle/wysiwyg/enter.ts Line 291 in 38bb738
|
transaction
In what scenarios do you need this feature?
protyle 下的编辑器绑定了 input 事件,在前端触发 input 的时候可以提醒后端更新数据。
在插件代码中也可以模拟这一操作,这样就可以在只更改前端的文本而不需要向后端发请求的情况下就更改思源的数据。
我感觉这个操作对插件开发挺便利的,建议把自定义触发 input 事件作为一个 protyle 的接口开发给插件系统。
Describe the optimal solution
添加 API
@Vanessa219
Describe the candidate solution
No response
Other information
No response
The text was updated successfully, but these errors were encountered: