如果 arr
里面是多个对象 {}
,而不是一个数组 []
,可以使用 Object.values()
方法将对象的值提取为一个数组,并进行遍历展示。以下是修改后的代码示例:
self.uploadImageBtn.addClickHandler(function() {
let importWindow = new utsourceFileUploadNew();
importWindow.on('utsourceContractImportFileUploadNew import success', function(event, data, arr) {
console.log(arr, data);
// 清空旧数据
self.flag.empty();
if (typeof arr === 'object') {
let values = Object.values(arr);
for (let i = 0; i < values.length; i++) {
let repaymentName = values[i].repaymentName;
let str = repaymentName.length > 20 ? repaymentName.substr(0, 20) + '...' : repaymentName;
// 创建展示元素
let linkElement = $('<a>')
.attr('style', 'text-decoration:none')
.attr('title', repaymentName)
.text(str);
let imgElement = $('<img>').attr('src', 'img/clear.png');
let flagElement = $('<div>').append(linkElement).append(imgElement);
// 设置点击事件
imgElement.on('click', function() {
self.repaymentName.setValue('');
self.flag.setValue('');
self.repaymentPath.setValue('');
self.flag.hide();
});
// 将元素添加到页面中
self.flag.append(flagElement);
}
// 显示flag元素
self.flag.show();
}
// 更新字段值(仅取最后一个数据)
if (data['repaymentName'] != null) {
let lastRepaymentName = values[values.length - 1].repaymentName;
self.repaymentName.setValue(lastRepaymentName);
self.flag.find('a').text(lastRepaymentName); // 更新展示元素中的文本
self.repaymentPath.setValue(data['repaymentPath']);
}
});
importWindow.show();
});
这样修改后,会将对象 arr
的值提取为一个数组,并遍历展示每个名称。其他逻辑保持不变。
请注意,在更新字段值时仅取最后一个数据的值进行更新。
内容由零声教学AI助手提供,问题来源于学员提问