实战示例
1. 备注
- 宜搭页面数据源现已支持添加 “连接器” 作为数据源 (如下图所示) ,如果您使用添加“连接器”功能,则可以略过本文档的 「2.1 新建远程数据源」小节。
- 本文档是实战示例1 ,此外还有实战示例2,实战示例2的文档: https://www.yuque.com/yida/subject/vddims
2. 步骤
2.1 新建远程数据源
新建远程数据源,请求方法选 POST,请求地址填“服务消费”接口的地址,请求参数添加 2 项: serviceInfo 和 inputs,并填写 serviceInfo 和 inputs 的值(直接写成对象字面量的形式(例如{"a":"b"})即可,无需自己转义(例如写成"{"a":"b"}")), 示例值 inputs 填 { "path": {}, "query": { "PageIndex": "1", "PageSize": "50", "KeyWord": '默认关键词' }, "header": { "content-type": "application/json"( 注意:如果入参header里不填content-type, 则宜搭服务端请求三方服务时默认用 application/x-www-form-urlencoded ,请根据三方服务的要求调整,目前在连接器工厂里设置的Headers参数实际并不会生效 ) } }, serviceInfo 填 {"connectorInfo":{"connectorId":"Http_1234567","actionId":"getItemList","type":"httpConnector","connection":"10"}};
2.2 数据处理
对服务返回值做处理, 例如做数据结构转换
示例代码:
function fit(response) {
console.log("SAP_Connector fit",response);
//获取服务的真实返回值
const serviceResult = (response.content !== undefined) ? response.content.serviceReturnValue:null;
//本示例要取的数据是服务真实返回值(本示例的服务真实返回值是一个对象)的Content属性的值(本示例是一个对象数组)
const content = ( serviceResult !== null) ? serviceResult.Content : null;
const error = {
message: response.errorMsg ||
(response.errors && response.errors[0] && response.errors[0].msg) ||
(response.content && response.content.serviceReturnValue && response.content.serviceReturnValue.ErrorCode) || '远程数据源请求出错,success is false',
};
let success = true;
if (response.success !== undefined) {
success = response.success;
} else if (response.hasError !== undefined) {
success = !response.hasError;
}
var arr=[];
var array = content?content:[];
for (var i = 0; i < array.length; i++) {
arr.push({
"defaultChecked": false,
"text": array[i].ItemName,
"value": array[i].ItemCode
});
}
return {
content: arr,
success,
error,
};
}
2.3 给下拉单选组件绑定数据源
选中下拉单选组件,切换到高级,新建动作, 选择 OnSearch 搜索, 在页面 JS 面板填写 JavaScript 代码, 实现实时更新下拉单选的选项
示例代码:
let lastTimer = null;
export function onSearch(keyword) {
console.log('onSearch', keyword);
//注:需下拉组件开启“可搜索”
clearTimeout(lastTimer);
lastTimer = setTimeout(() => {
const inputs = {
"path": {},
"query": { "PageIndex": "1", "PageSize": "50", "KeyWord": keyword || '默认关键词' },
"header": { "A": "B" , "content-type": "application/x-www-form-urlencoded" }
}
// 如果 Select 需要调用远程接口搜索,请将下方的 selectOptions 改为实际的数据源名称
return this.dataSourceMap['SAP_Connector'].load({
//这里的inputs会覆盖数据源里定义的inputs
inputs: JSON.stringify(inputs),
}).then((content) => {
console.log('after search');
this.$('selectField_kllxy5vi').set('dataSource', content);
});
}, 300);
}
--------------------欢迎关注我们--------------------
本文档对您是否有帮助?