【Oracle APEX开发小技巧 7】解决初始化数据在动态操作-变更中被识别跳出弹窗的问题
在开发时有一个场景——推送开关数据来自于初始化动态操作,理论上只有变更的时候才会有二次提示,但是因为初始化会触发变更,所以会有弹窗,这不是我们想要的结果,有什么办法在初次回显数据不跳出提示吗?
开始我在APEX页面想通过原生的方式解决,但是失败了,后来我通过通过设置标帜位解决了这个问题——初始化时设置值,变更标帜位值变化,只有标帜位不为初始值才会弹出弹窗提示。
以下是具体操作:
通过设置标帜位,将初始化时的加载次数设置为1,
变更项值触发加载次数变更的动态操作
变更后加载次数设为0
只有加载次数为0(非初始化加载)才会有变更弹窗提示
如此初始化加载数据也不会弹出弹窗
PS:中间有尝试过通过记录初始化旧值和页面新值作比较,但是苦于无法获取旧值,代码思路是没问题的,也来一观
if (confirm('确认关闭/开启推送?')) {
return true;
} else {
return false;
}
// let isFirstRender = true; // 添加一个标志位
// let previousValue = null; // 添加一个变量来存储之前的值
// // 假设这是你的初始化动态操作函数
// function initDynamicOperation() {
// // ... 其他初始化操作
// // 检查是否需要弹出提示框
// let currentValue = $v('P49_ANNOTATION_IS_CREATE_TASK');
// if (!isFirstRender && currentValue !== previousValue) {
// if (confirm('确认关闭/开启推送?')) {
// return true;
// } else {
// return false;
// }
// }
// // 如果是第一次渲染,将标志位设置为false
// if (isFirstRender) {
// isFirstRender = false;
// }
// // 更新之前的值
// previousValue = currentValue;
// }
// if (utils.checkNull($v('P49_ANNOTATION_IS_CREATE_TASK'))) {
// alert('请选择要更改的状态!');
// return false;
// } else {
// if (confirm('确认关闭/开启推送?')) {
// return true;
// } else {
// return false;
// }
// }