概述
编辑器的选项管理器对象OptionsManager,定义在ThinkEditor.Defined.js文件中。
OptionsManager应当跨文档管理共享知识库选项数据,编辑器默认初始化了一个全局选项管理器对象optionsManager实例来管理选项。
需要使用时import
import { optionsManager } from '@/components/editor/ThinkEditor.Defined';
选项数据的产生
选项数据由如下几种方式产生
- 方式一:解析文档时如文档有使用选项数据,将产生setOptions.event事件
- 方式二:利用UI-知识库管理 编辑、新增optionsManager对象中的选项数据
- 方式三:一般HIS系统都有现成的知识库选项数据,通过调用接口添加选项使用
注意:
- 选项数据并不是直接加载到文档或编辑器中的,而是跨文档加载到optionsManager中。
方式一:解析文档时文档编辑器将产生setOptions.event事件
选项数据会按需保存到xml中,解析一个文档结束后将产生setOptions.event事件,应用监听编辑器的setOptions.event事件获取文档选项数据到应用UI。
- 详见Demo OnSetOptionsEvent()->optionsManager.AddOptions方法处理
示例代码:
添加监听setOptions事件
addEditorEventListener(thinkEditor) {
...
thinkEditor.removeEventListener(E_EVENT_KEY.setOptions, this.OnSetOptions);
...
}
关闭编辑器时应当移除监听setOptions事件
removeEditorEventListener(thinkEditor) {
...
thinkEditor.removeEventListener(E_EVENT_KEY.setOptions, this.OnSetOptions);
...
}
方式二:利用UI-知识库管理 编辑、新增
- 详见Demo optionSet.vue optionsManager.AddOption处理
鼠标右键菜单-知识库
方式三:应用通过接口添加
第三方应用可将自己原有的选项结构转换为AddOptions()接口需要的选项参数结构;或通过代码构造选项参数结构。
- 详见Demo async PreLoadUserDefinedOptions处理
- 用户应当结合自己系统完善PreLoadUserDefinedOptions方法实现
选项参数结构如下
options
[
{
"optionClass": "自定义",
"optionId": "性别",
"items": [
{
"id": "男",
"groupId": "1",
"weight": 1,
"content": ""
},
{
"id": "女",
"content": "",
"groupId": "1",
"weight": 1
}
]
}
]
调用接口
optionsManager.AddOptions(options)
选项数据的消费
注意:
- optionsManager中的选项数据有如下的消费场景
a、提供给UI(选项Comb)
b、文档按需加载选项数据
a、提供给UI(选项Comb)
选项类
optionsManager.options数组中的optionClass为当前系统支持的选项类
示例使用代码
<el-option v-for="item in optionsManager.options" :key="item.optionClass" :label="item.optionClass" :value="item.optionClass"></el-option>
选项组
var currentOptionClassObj = optionsManager.options[i]
currentOptionClassObj中的optionIds为当前系统支持的选项组
示例使用代码
<el-option v-for="item in currentOptionClassObj.optionIds" :key="item.optionId" :label="item.optionId" :value="item.optionId"></el-option>
b、文档按需加载选项数据
文档需要选项数据时,将产生setOptions.request事件。注意:和setOptions.event区别。
- 使用thinkEditor.SetOptions()接口加载选项数据到文档中
示例代码:
OnSetOptionsRequest(e /*ThinkEditorEvent*/) {
var thinkEditor = e.data.editor
if (thinkEditor === undefined) {
return; //error
}
var requestOptionIds = e.data.data;
var setOptionIds = new Array();
for (let requestOptionId of requestOptionIds) {
var optionId = this.$optionsManager1.GetOptionId(requestOptionId.optionClass, requestOptionId.optionId);
if (optionId !== undefined) {
setOptionIds.push(optionId);
}
}
thinkEditor.SetOptions(setOptionIds);
}
文档更新时间: 2024-11-20 21:54 作者:admin