注:此方案上传的组件只能在当前租户下的所有门户可见;
自定义组件上传画面如上图↑↑↑
组件名称 | 必填* | 自定义组件名 |
---|---|---|
组件图片 | 自定义的组件图标 (不上传有个默认的) | |
组件源文件 | 组件的js文件(只有一个) | |
组件回调函数名 | 组件js的初始化方法(说明看下面) | |
平台服务代码 |
组件回调函数({
eventbus: eventbus,
context: {},
opt: {
lang: 'zh_cn',
origin: 'runtime',
el: `.portal-custom-${data?.nid}`},
})
写法说明:
eventbus: 接收一个发布订阅对象作为参数 用于自定义组件同设计器的通信维持
context: 上下文对象用于传递组件环境的信息(备用 暂时不需要)
opt:配置项 {
lang: 'zh_cn', // 语言环境,'zh_cn' - 中文(默认), 'en' - 英文,'zh_tw' - 繁体
el: '#Yzone-nI21HNvV9q', // 组件需要绑定到的dom节点 设计器会传入一个selector 类或者id字符串 (重要)
origin: 'runtime', // 当前磁贴运的运行状态, 'designer' - web 端设计态, 'preview' - 预览状态, 'runtime' - 真正的运行态(默认)
}
/**
* 第三方组件DEMO
*/
var extendComponentDemo = (params) => {
var parentNode = document.querySelector(params.opt.el);
if (!parentNode) {
return;
}
var thirdPartAppBlock = document.createElement('div');
var testData = {
'zh_cn': '持续创新。。。',
'en': 'I am a third party app tile',
'zh_tw': '持续创新。。。',
}
var txt = document.createTextNode(testData[params.opt.lang || 'zh_cn']);
thirdPartAppBlock.appendChild(txt);
thirdPartAppBlock.className = 'thirdPartApp-block';
thirdPartAppBlock.style.color = '#000';
thirdPartAppBlock.style.backgroundColor = '#f1c6ec';
thirdPartAppBlock.style.height = '100px';
parentNode.appendChild(thirdPartAppBlock);
thirdPartAppBlock.addEventListener('click', () => {
if (params.eventbus) {
params.eventbus.emit('transferData', {test: 112});
}
})
}
window.extendComponentDemo = extendComponentDemo;