## cap3自定义控件
1、自定义控件事件注册
目录:移动工程/v5/form/js/components/suiCustom.js
示例:
/**
* demo自定义控件-附件,返回html
* @param (html, inputAttrObj, options, auth)
* @returns {string}
*/
api.buildAttaChmentDom = function(html, inputAttrObj, options, auth){
//此处是渲染控件的dom
//如果是relation或者relationform,则修改__state
if (options.fieldInfo.inputType == 'relation' || options.fieldInfo.inputType == 'relationform') {
options.model.__state = 'modified';
}
inputAttrObj['value'] = options.model.value;
inputAttrObj['readonly'] = 'true';
inputAttrObj['class'] += ' sui-hide';
html += '<input ' + cmp.sui.attrBuilder(inputAttrObj) + '/>';
html += '<div ' + cmp.sui.attrBuilder({class: 'sui-form-ctrl-value-display sui-form-ctrl-attachment', id: options.fieldInfo.name}) + '>';
//attachment控件 --start
options.model.attData = options.model.attData || [];
var items = options.model.attData;
if (items.length > 0) {
html += '<div class="attachment-items">';
items.forEach(function(item){
item.remoteSource = !item.remoteSource ? (cmp.util.getSeeyonPath() + '/rest/attachment/file/' + item.fileUrl) : item.remoteSource;
html += ' <div class="attachment-item">';
html += ' <i class="attachment-icon ' + _FileExtensionFilter(item.extension) + '"></i>';
var dom = document.createElement('div');
dom.classList.add('attachment-content');
dom.classList.add('allow-click-attachment');
dom.setAttribute('see-att-data', JSON.stringify(item));
dom.innerHTML = item.filename;
html += dom.outerHTML;
if (auth == 'edit') {
html += ' <i class="see-icon-v5-form-close-circle-fill"></i>';
}
html += ' </div>';
});
} else {
html += '<div class="attachment-items items-empty">';
}
html += '</div>';//items-end
if (auth == 'edit') {
html += '<div class="attachment-add-item">' + (cmp.i18n('form.attachment.uploadLimit') || 'Please upload file which limited as 50MB') +
' <div class="icon-add">' +
' <i class="see-icon-v5-form-add"></i>' +
' </div>' +
' </div>';
}
html += '</div>';
//attachment控件 --end
html +='</div>';
return html
}
2、自定义调用
目录:移动工程/v5/form/js/components/sui_utils.js
示例:
case 'customcontrol':
if(options.model.customType&&options.model.customType!='text'){
//自定义控件 -demo
inputAttrObj['customType'] = options.model.customType;
switch (inputAttrObj['customType']){
case 'attachment':
html += SuiCustom.buildAttaChmentDom (html, inputAttrObj, options, auth)
break;
default:
break;
}
}else{
inputAttrObj['value'] = options.model.value;
inputAttrObj['readonly'] = 'true';
inputAttrObj['class'] += ' sui-hide';
html += '<input ' + $.sui.attrBuilder(inputAttrObj) + '/>';
html += '<div ' + $.sui.attrBuilder({class: 'sui-form-ctrl-value-display sui-form-ctrl-static ' + (!options.model.value ? 'sui-form-placeholder' : ''), id: options.fieldInfo.name}) + '>' + (options.model.display || options.fieldInfo.desc || '').escapeHTML() + '</div>';
}
break;
- 概要
- 技术介绍
- 框架与环境
- vue开发
- 开发规范
- 前端开发规范
- 总体原则
- HTML规范
- HTML&css规范
- vue编码规范
- Javascript规范
- 后端开发规范
- cap4
- 自定义控件
- 前端2.0(PC+移动)
- PC前端
- 后端
- 移动端
- 移动端接口
- 低版本协同升级到V5 8.0适配说明
- 自定义按钮
- 自定义按钮(无流程)
- 自定义控件(列表插槽)
- 自定义按钮(筛选条件)
- 低版本协同升级到V5 8.0适配说明
- 门户空间
- 门户与栏目挂载
- 栏目开发及流程说明
- 页面模板
- 客开通路及插件体系
- 表单设计器扩展配置
- 使用步骤
- 配置说明
- 事件API
- Demo示例
- 运行态客开通路
- 插件使用步骤
- 插件接口
- 事件接口
- 钩子相关接口
- 表单操作接口
- Demo示例
- 插件机制
- 表单运行态接口(旧)
- 白名单插件
- 版本记录
- vue组件库
- 开发指南
- 开发文档规范
- 业务组件介绍
- 业务组件
- table组件
- 分页组件
- title组件
- 统计排队组件
- code组件
- 条件筛选
- 批量导入
- 上传Excel
- 批量更新
- 批量刷新
- UI组件
- 按钮组件
- 复选组件
- 取色器组件
- 示例组件
- 水平选择组件
- 选图标组件
- 提示组件
- 单选组件
- 搜索组件
- 选择组件
- 穿梭框组件
- 标签组件
- 文本组件
- 树组件
- 验证组件
- 菜单组件
- iframe组件
- toolbar
- 统计组件
- 饼图
- 柱状图
- 图标
- 业务关系开发指南
- 自定义触发
- 自定义关联
- 后端API
- 更新表单数据缓存
- 发起表单流程
- 取得指定表单PDF或截图
- 无流程批量添加
- 无流程批量删除
- 无流程批量更新
- 无流程批量导出
- 客开培训文档
- Vue基础培训
- Vue实战培训
- Vue进阶培训
- VueCLI3培训
- cap3
- 自定义控件
- 后端
- 移动端
- 前端编译
- 表单运行态接口
- 协同云