多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 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;