问题 #2801💬 已回答提出于 2020年5月25日作者 fedd1 个反应

用服务器端的 if 或 foreach 表达式(即 MVEL)丰富任何组件

快速解答作者 Ju99ernaut1

要包围元素,可以查看“toHtml”,你可以在相关内容中搜索示例。 无论如何,我觉得替换默认组件类型不是个好主意,我建议创建一个扩展默认类型的新组件,并用“isComponent”来确定它的分配方式。[components](https://grapesjs.com/docs/modules/Components.html#how-components-work)的文档可能会有帮助

阅读下方完整回答 ↓

问题

我正在研究如何制作一个带有服务器端表达式的模板,可以重复某个组件(“foreach”)或完全移除(“if”)。我的后端用 [mvel](http://mvel.documentnode.com/) 解析模板。 我的想法是给所有或部分部分元素添加几个设置。例如,映射到单元格<div>的“'”,所以它看起来像这样: <div mvel-foreach=“item : people” class=“cell” id=“iuck”> ....部分内容inside...@{item.lastName}...... ...等等等等 </div> 或者用文本(“mvel-ending”插入分隔符): <div mvel-ending=“', '” mvel-foreach=“item : people” id=“iohm”>@{item.lastName}</div> 之后我计划开发一个后处理器,用实际的mvel表达式包围重复元素: @foreach{item : people}<div id=“iohm”>@{item.lastName}</div>@end{', '} 我那个脏的后期处理器负责在用“setComponents”方法把模板加载到GrapesJs编辑器之前,把表达式反向替换为标签属性。 所以问题N1是我缺少的,有没有更好的方法用服务器端表达式包围某些(或全部)元素,这些表达式实...

回答(3)

fedd2020年5月26日

组件的文档可能会有帮助 我是基于这篇文章编写的代码。上面写着,更新组件类型其实很简单,让我们看看具体方法: .... “默认值”属性的处理方式不同 并将与旧的“默认”合并 所以我现在更新了一个简单的“输入”组件类型,不是默认的: const mvelModel = { 型号:{ 默认值:{ 特质:[ 'mvel-if', “mvel-foreach”, “mvel-ending”, ] } } }; 编辑。DomComponents.addType('input', mvelModel); 不过,它不是合并新特征,而是用新的属性替代了之前定义的输入特征。 有人知道怎么把设置项添加到已有的组件...

artf2020年5月26日

@fedd你可以在“model.init”函数中添加你的新特征

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

浏览插件分类

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