使用AstroZero自定义组件在页面中的属性
期望实现效果
组件预置的属性不能满足您的业务需求时,支持为组件自定义属性。例如,为组件widget_demo_property自定义Text Property、Checkbox Property和Select Property三个属性。组件中自定义属性在页面中的最终呈现效果如图1所示。
功能实现方法
- 下载组件模板。
- 进入AstroZero服务控制台。
- 在主页中,单击“进入首页”,进入AstroZero应用开发页面。
- 单击,选择 ,进入环境配置。
- 在主菜单中,选择“维护”。
- 在左侧导航栏中,选择“全局元素 > 页面资产管理 > 组件模板”。
- 在组件列表中,单击“widgetPropertyTemplate”,进入模板详情页。
- 单击“下载”,设置组件的名称为“widget_demo_property”,单击“保存”,将模板下载到本地。
图2 保存模板
如果选择“下载原始模板”,下载到本地的组件包中,组件名称不会被修改。
- 自定义组件属性。
- 在“widget_demo_property.editor.js”的“propertiesConfig”中,定义Widget属性,包含属性的类型、名称和在界面展示的标签名。
如下加粗代码所示,“widget_demo_property.editor.js”中分别定义了text、 checkbox以及select类型的三个属性参数。
widget_demo_property = widget_demo_property.extend({ / Config to define Widget Properties */ propertiesConfig:[{ config: [{ "type": "text", "name": "textProperty", "label": "Text Property", "value": "text" }, { "type": "checkbox", "name": "checkboxProperty", "label": "Checkbox Property", "value": "true" }, { "type": "select", "name": "selectProperty", "label": "Select Property", "options": [{ "label": "option1", "value": "option1", "selected": "true" }, { "label": "option2", "value": "option2" } ] } ] }], / Triggered when the user Creates a new widget and used to initialize the widget properties */ create : function(cbk) { if(cbk) { this._super(); cbk(); } } }); var params = {}; Studio.registerWidget("widget_demo_property", "widget_demo_property", params);
其中:
- type:属性的类型。
- name:属性的名称。
- label:属性在界面展示的标签名。
- value:属性的默认取值。如果属性是select类型,则需要定义选项“options”。
- 在“widget_demo_property.js”中,通过定义widgetProperties变量“var widgetProperties = thisObj.getProperties();”,调用“thisObj.getProperties”方法,来获取到这些属性。
var widget_demo_property = StudioWidgetWrapper.extend({ / Triggered when initializing a widget and will have the code that invokes rendering of the widget */ init : function() { var thisObj = this; thisObj._super.apply(thisObj, arguments); thisObj.render(); if((typeof(Studio) != "undefined") && Studio) { / Register custom event or action here, and trigger the event afterwards. Studio.registerEvents(thisObj, "", "", EventConfig), Studio.registerAction(thisObj, "", "", ActionConfig, $.proxy(this.Cbk, this), ); thisObj.triggerEvent("", ) */ } }, / Triggered from init method and is used to render the widget */ render : function() { var thisObj = this; var widgetProperties = thisObj.getProperties(); var elem = thisObj.getContainer(); var items = thisObj.getItems(); var connectorProperties = thisObj.getConnectorProperties(); / API to get base path of your uploaded widget API file */ var widgetBasePath = thisObj.getWidgetBasePath(); if(elem) { var vm = new Vue({ el: $("#widget_demo_property", elem)[0], data: { form: { textProperty: widgetProperties.textProperty, checkboxProperty: widgetProperties.checkboxProperty, selectProperty: widgetProperties.selectProperty } } }) } / API to bind global events to the item DOM, it should not be deleted if there will some events to trigger in this widget. */ thisObj.sksBindItemEvent(); / API to refresh the previously bound events when a resize or orientation change occurs. */ $(window).resize(function() { thisObj.sksRefreshEvents(); }); }, });
- 在“widget_demo_property.ftl”中,定义渲染页面,属性配置为只读模式。
<div id="widget_demo_property"> <el-form :model="form"> <el-form-item label="Text Property"> <el-input v-model="form.textProperty" :readonly="true"></el-input> </el-form-item> <el-form-item label="Checkbox Property"> <el-input v-model="form.checkboxProperty" :readonly="true"></el-input> </el-form-item> <el-form-item label="Select Property"> <el-input v-model="form.selectProperty" :readonly="true"></el-input> </el-form-item> </el-form> </div>
- 将开发好的组件代码压缩到后缀为“.zip”的压缩文件中,也可以单击链接,获取组件样例包“widget_demo_property.zip”。
- 在“widget_demo_property.editor.js”的“propertiesConfig”中,定义Widget属性,包含属性的类型、名称和在界面展示的标签名。
- 在组件库中上传组件包。
- 在环境配置的“维护 > 全局元素 > 页面资产管理 > 组件”中,单击“提交新组件”。
- 在提交新组件页面,设置组件基本信息,并上传压缩文件,单击“提交”。
图3 上传自定义组件示例
表1 上传自定义组件参数说明 参数
说明
示例
名字
新提交组件的名称,系统会根据组件包名称自动填充。
widgetdemoproperty
上传源文件
组件源文件包。
选择2中的widget_demo_property.zip
场景
组件包的应用场景,可同时选择多个。
高级页面
发行说明
组件的描述信息,按需进行设置。此处配置的信息,将会在组件详情页的“概况”页签中进行显示。
自定义组件
- 关闭Vue3框架渲染组件开关。
本实践所涉及到的自定义组件是基于Vue2框架开发的,而系统是默认开启Vue3框架渲染组件的,所以您需要手动关掉Vue3框架渲染组件开关,否则拖拽组件到页面时会提示如下报错。图4 界面报错
- 在应用设计器中,单击左侧导航栏中的“设置”。
- 在“高级设置”中,取消勾选“页面组件的渲染框架由Vue2升级为Vue3”开关。
图5 取消选中
- 在应用设计器中,选择“界面”,单击高级页面后的“+”,新建一个高级页面。
- 在设计页面左上方单击,从“自定义”组件中拖拽3中的组件至右侧空白页面。
- 选中该组件,会在右侧显示该组件的属性配置面板。
- 在“属性”页签下,“自定义属性列表”区域中可看到自定义的三个属性,根据需要进行修改。
图6 编辑该Widget属性