主要是editor.DomComponents.addType自定义一个组件,然后在组件init的时候,调用fetch从后端url获取数据,然后再调用 model.set('content', data.content);与model.components(data.content)更新组件内容,示例代码如下:
const editor = grapesjs.init({ container: '#gjs', fromElement: true, height: '100%', width: 'auto', plugins: ['gjs-preset-webpage'], storageManager: false, blockManager: { blocks: [ { id: 'form-new', label: '<b>Form New</b>', attributes: { class: 'gjs-block-form-new' }, content: { type: 'form-new', content: 'Loading...' // 一个初始的内容,ajax 加载完成将被更新 }, }, ], } }); editor.DomComponents.addType('form-new', { isComponent: el => el.tagName === 'FORM' && el.getAttribute('data-form-type') === 'new', model: { defaults: { tagName: 'form', traits: [], // 移除原始 traits name: 'Form New' }, init() { this.fetchDataFromBackend(); }, fetchDataFromBackend() { // 模型引用 const model = this; // AJAX 请求获取数据 fetch('后端url地址') // 请替换为您的后台接口地址 .then(response => { if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return response.json(); }) .then(data => { if (data.content) { // 更新组件内容 model.set('content', data.content); model.components(data.content); } }) .catch(error => { console.error('Error fetching data:', error); }); }, } });
网友回复
腾讯混元模型广场里都是混元模型的垂直小模型,如何api调用?
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?