问题说明
流程表单字段变化事件内修改字段本身的值:此场景容易陷入死循环,那么需要自己思考出业务逻辑特定的结束条件结束死循环。
场景实例
近期有个流程表单用户在输入权重字段(百分比)时要求写入10转换为10%,不希望输入0.1这种操作,于是尝试添加公式将数值除以100或 乘以0.01,发现展示结果时0%,然后改用js 依旧是0%
思考应该是循环调用使得数值小于0.01,尝试打印代码确实是陷入循环了,思考了一下可以控制数据范围100%-1%时,数值小于1时 不再转换
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent("field11616,field11623",function(id,rowIndex,value){
if(value<1){//防止死循环的条件
return;
};
let _id = (id+'_'+rowIndex);
let _value = (value/100);
//console.log("WfForm.bindDetailFieldChangeEvent--",_id,_value);
WfForm.changeFieldValue(_id, {value:_value});
});
});
总结
流程表单字段变化事件内修改自身逻辑上本就是个循环,主要是找到结束循环条件。(官方文档提到文本类型修改是添加延时,但实际经测试还是触发2次,之前有过校验非法字符时清空字段,是添加条件字段不为空才校验)