diff --git a/src/core/designer.js b/src/core/designer.js index 0902092..1dec276 100644 --- a/src/core/designer.js +++ b/src/core/designer.js @@ -636,11 +636,12 @@ class Designer { createExtensionModel(values = []) { const extensions = [] values.forEach(extension => { + const descriptor = extension.$type || extension.name + delete extension.$type + delete extension.name const extensionModel = this.createModel({ - descriptor: extension.$type || extension.name, - attrs: { - value: extension.$body || extension.value - } + descriptor, + attrs: extension }) if (extensionModel) { extensions.push(extensionModel) diff --git a/src/utils/utils.js b/src/utils/utils.js index 4a39f15..cf8fbe7 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -261,12 +261,11 @@ export const setExportData = element => { */ const setExportExtensions = values => { const extensions = [] - for (let i = 0; i < values.length; i += 1) { - extensions.push({ - name: values[i].$type, - value: values[i].value - }) + const item = cloneDeep(values[i]) + item.name = item.$type + delete item.$type + extensions.push(item) } return extensions diff --git a/static/extensions.js b/static/extensions.js index 603292b..52476df 100644 --- a/static/extensions.js +++ b/static/extensions.js @@ -18,6 +18,11 @@ var Extension = { name: 'test2', superClass: ['Element'], properties: [ + { + name: 'attr', + type: 'String', + isAttr: true + }, { name: 'value', isBody: true, @@ -28,4 +33,4 @@ var Extension = { ], emumerations: [], associations: [] -} \ No newline at end of file +} diff --git a/static/index.html b/static/index.html index eba2d61..c96b995 100644 --- a/static/index.html +++ b/static/index.html @@ -197,7 +197,8 @@ }, { name: 't:test2', - value: '测试2' + value: '测试2', + attr: 'attr2' } ] })