问题 #2674💬 已回答提出于 2020年3月20日作者 teawithfruit1 个反应

I18N内容集成

快速解答作者 artf1

@teawithfruit如果你期望在保存的HTML页面(除了GrapesJS编辑器)里看到什么,我看到它唯一能做的就是: “''js 脚本:function() { console.log(“剧本完成!”) } ``` 所以它什么都没做,可能你也是误以为GrapesJS编辑器里的脚本能在导出的代码里工作(但最终HTML和编辑器无关)。更详细的解释[这里](https://github.com/artf/grapesjs/issues/2181#issuecomment-520470116)

阅读下方完整回答 ↓

问题

你好, 我正在开发将我的本地化系统(i18n)与grapes.js集成。这个想法是有一个数据字段,用于存储 i18n 字符串。 '''html <div class=“content” data-i18n=“common:localize.string”></div> ``` 如果数据属性被设置,grapes.js会将字符串放在设置字段中显示。如果设置字段被更改,数据属性和画布内的内容也会被更改。如果设置字段被清除,数据属性将被删除。 如果文件被保存,属性也会被包含在内。在生产环境中使用该文件时,一个小脚本会搜索data-i18n属性,以正确语言设置元素内的文本。 现在我在实现上遇到了一些问题。如果我编辑设置字段,画布中的内容设置正确,但在“查看代码”中,而保存的文件却没有。看起来文本是附加的,而不是替换的。“' component.components('Insert text here...')' 是替换组件内内容的正确方式吗?(jsfiddle 第29行) 你可以在设置字段中使用“i18nString”来模拟有效的i18n字符串。我想将脚本集成到组件中。现在我在使用异步函数时遇到了问题。在组件脚本中使用异步函数可能吗?(JSFIDDLE 第57行)更新画布内容的最佳方式是什么?我现在在第27行到第61行之间待处理。两者都处于关键阶段。如果我更改设置字段,排版设置会被重置。有...

回答(3)

artf2020年4月1日

@teawithfruit如果你期望在保存的HTML页面(除了GrapesJS编辑器)里看到什么,我看到它唯一能做的就是: “''js 脚本:function() { console.log(“剧本完成!”) }

所以它什么都没做,可能你也是误以为GrapesJS编辑器里的脚本能在导出的代码里工作(但最终HTML和编辑器无关)。更详细的解释[这里](https://github.com/artf/grapesjs/issues/2181#issuecomment-520470116)
pouyamiralayi2020年3月21日

你好@teawithfruit你的代码有几个问题: 1)你无法访问组件“脚本”中的“这个”模型:[Component & Js 文档](https://grapesjs.com/docs/modules/Components-js.html) 2)如果你的用例是控制某个属性,你不必为此提供自定义特征;只需定义一个常规特征,并为该属性的变化添加监听器: 干杯!

teawithfruit2020年3月23日

感谢你非常有帮助的回答!这是我更新后的模块/组件。 现在我还有一个问题。 我添加到组件中的脚本函数在保存的HTML页面中没有被调用。如果我在编辑器里把块添加到画布里,函数会被调用,但如果我保存页面并在grapes.js外打开,则调用不行。 如果我查看元素检查器,脚本标签是可见的,但没有被调用。 是我哪里做错了吗? “''js 编辑。DomComponents.addType('content', { isComponent: el => el.classList && el.classList.contains('content'), 扩展:“文本”, 型号:{ async init() {...

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

浏览插件分类

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