问题 #1762💬 已回答提出于 2019年1月29日作者 AkibDeraiya1230 个反应

当我们用 editor.getHtml() 获取 HTML 时,图片不会改变

快速解答作者 artf

你没有展示任何代码,但我猜你只是编辑了组件的DOM元素,实际上你应该更改它的[Component](https://grapesjs.com/docs/api/component.html)模型数据(例如'imgModel.set('src', 'base64....')')

阅读下方完整回答 ↓

问题

你好@artf

我正在用grapes.js来做我的网站建设工具,把它集成到我的网站里。 当我双击任意图片时,资产管理器会打开,我可以从资产管理器中选择图片。

问题是我设置了条件,比如一旦用户选择asset-manager里的任何图片,我会把'img'标签替换成'div'标签,并在那里初始化一个image-editor(它是cropper.js)'。

现在一旦我在选择图片后关闭资产管理器,新的图片路径会被设置,新的 div 也会被设置,而不是 img 标签。

一旦用户点击编辑器(我指的是图片编辑器)中的完成按钮,它就会给我们64进位的图片,我也会把更新后的64进位图片替换到UI里,但当我用“editor.getHtml()”获取实际HTML内容时,我只得到更新后的路径img标签,而不是被替换的div和base:64图像路径。

我能知道如何在使用 editor.getHtml() 获取 HTML 内容时更新新的图片路径(base-64)吗?

我附上了相同的屏幕录制视频, https://drive.google.com/file/d/1zeUcO8aVXDCeWCVakHpbycgHGtfnU4Qa/view

回答(3)

AkibDeraiya1232019年2月15日

你好@artf 感谢你对我问题的回复。 我这里附上了我的代码,请告诉我哪里做错了。 基本上,上面的代码会运行,用户会双击特定图片。在这个函数里,我会在选中的图片中添加一个随机生成的“id”属性。 现在我也叫了“stop:open-assets”, 我试过类似“这代码运行正常,而我打算用”.set“函数配合”opts“。但这里的问题是,当我添加这3行时,assetManager无法打开。 如果有 editor.command 方法,当用户选择图片并关闭 assetManager 时,它会用三个参数运行,比如“editor”、“sender”、“opts”,所以通过这个“opts”,我可以设置新...

artf2019年2月16日

目前在这个函数里,我用jQuery更改了图片“src”,运行正常。但当我看到'editor.getHtml()'时,它并没有被重新填入。

......@AkibDeraiya123这正是我之前评论里告诉你的......不要用JQuery编辑DOM......按照我说的编辑模型

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。