白桃乌龙加 发表于 2025-11-3 12:23:04

流程表单中“嵌入视图view”组件,如何将视图数据赋值表单




目前我的视图组件是“嵌入视图”,我在数据中心的该视图的操作列写了click事件,当点击时获取行的Jobid列调用接口获取返回数据,然后把值赋给表单上的组件:


var _this = this

console.log('this.target.row.data',this.target.row.data.data.JobId)

var job = this.target.row.data.data.JobId

var action = this.Actions.load("x_processplatform_assemble_surface");
       action.DataAction.getWithJob(//平台封装好的方法
      job,//uri的参数
      function( json ){ //服务调用成功的回调函数, json为服务传回的数据
         data = json.data; //为变量data赋值
         console.log('返回业务数据',data)



// 需要提取的字段列表(已去除前缀)
const fields = [
"顾客单位或编码",
"联系人",
"地址",
"电话",
"产品名称",
"数量",
"评审内容",
"其他说明",
"特殊要求",
"评审部门",
"补充说明",
"交货期",
"评审结果其他",
"产品版本",
"发货单号",
"备注"
];

// 用于存储格式化结果
let result = [];

// 遍历字段列表
fields.forEach(field => {
// 构造原始字段名(带前缀)
const elInputKey = `elinput_${field}`;
const elCheckboxKey = `elcheckbox_${field}`;
const calendarKey = `calendar_${field}`;

// 从 data 中获取值
let value;
if (data.hasOwnProperty(elInputKey)) {
    value = data;
} else if (data.hasOwnProperty(elCheckboxKey)) {
    value = data.join("、");// 数组转为逗号分隔
} else if (data.hasOwnProperty(calendarKey)) {
    value = data;
} else {
    value = "无";// 字段不存在时的默认值
}

// 格式化字符串
result.push(`${field}:“${value}”`);
});

// 最终结果(每行换行)
const formattedResult = result.join("\n");
console.log(formattedResult);

_this.data['elinput_1_1'] = formattedResult


      }.bind(this),
   function( json ){ //服务调用失败的回调函数, json为服务传回的数据
      data = json.data; //为变量data赋值
   }.bind(this)
    );



我想把formattedResult的值赋值给流程表单上的elinput_1_1组件,但是
现在console.log(formattedResult);是能正常打印出值的,问题出在这行:_this.data['elinput_1_1'] = formattedResult会报错:

Uncaught (in promise) TypeError: Cannot set properties of undefined (setting 'elinput_1_1')
    at MWF.xScript.ViewEnvironment.<anonymous> (<anonymous>:68:27)
    at Object.onSuccess (<anonymous>:1:50037)
    at i.extend.$owner (mootools-1.6.0_all.js:1399:1)
    at Object._runCallback (o2.js:353:1)
    at o2.js:2227:1

然后我换成_this.form.get("elinput_1_1").setData(formattedResult);也报错:

报错:Uncaught (in promise) TypeError: _this.form.get is not a function
    at MWF.xScript.ViewEnvironment.<anonymous> (<anonymous>:68:38)
    at Object.onSuccess (<anonymous>:1:50037)
    at i.extend.$owner (mootools-1.6.0_all.js:1399:1)
    at Object._runCallback (o2.js:353:1)
    at o2.js:2227:1



请问我该如何将嵌入视图的视图列获取到的处理后的某个值赋值给该视图放置的表单上的组件?


-胡光平 发表于 2025-11-4 14:59:04

你把_this 打印出来,视图里面的_this 方法和表单里面的_this 方法是不一样的。

白桃乌龙加 发表于 2025-11-6 11:43:54

-胡光平 发表于 2025-11-4 14:59
你把_this 打印出来,视图里面的_this 方法和表单里面的_this 方法是不一样的。 ...

你好,this打印如下:
,请问我该如何给视图放置的表单中的组件赋值?

-胡光平 发表于 2025-11-6 14:28:48

白桃乌龙加 发表于 2025-11-6 11:43
你好,this打印如下:
,请问我该如何给视图放置的表单中的组件赋值?

视图里面的this 方法没有setData 这个方法。

-胡光平 发表于 2025-11-6 14:32:17

白桃乌龙加 发表于 2025-11-6 11:43
你好,this打印如下:
,请问我该如何给视图放置的表单中的组件赋值?

我目前是在表单里面,通过this.form.get("视图组件名字").getData()方法把视图选择的数据获取后赋值给表单内容。通过视图里面添加按钮这种方式还没尝试过。

xadmin 发表于 2025-11-6 15:05:16

var env = this.queryView.getParentEnvironment(); //当视图被嵌入到页面的时候,可以在视图里获取页面的上下文

白桃乌龙加 发表于 2025-11-8 16:54:34

谢谢。已解决赋值
var parentEnv = _this.queryView.getParentEnvironment();
var targetComponent = parentEnv.form.get("组件ID");
targetComponent.setData(formattedResult);

白桃乌龙加 发表于 2025-11-8 16:55:23

-胡光平 发表于 2025-11-6 14:32
我目前是在表单里面,通过this.form.get("视图组件名字").getData()方法把视图选择的数据获取后赋值给表 ...

谢谢。管理员回复我了,确实是视图的this 不一样。
这样就可以解决了
var parentEnv = _this.queryView.getParentEnvironment();
var targetComponent = parentEnv.form.get("组件ID");
targetComponent.setData(formattedResult);
页: [1]
查看完整版本: 流程表单中“嵌入视图view”组件,如何将视图数据赋值表单