妄想社成员 发表于 2024-2-29 22:43:08

9.103 带有命令的文本框值为=NOW(),页面加载后命令执行机制

本帖最后由 妄想社成员 于 2024-3-2 21:17 编辑

对于页面上一个带有命令的文本框,将文本框上的值设置为=NOW(), 这个文本框在页面加载后的执行情况,我验证处了三种情况,

1.单纯文本框命令+公式 是不会触发的
2.弹出页不绑定字段,其他页传一个值到弹出页单元格上,会触发一次
3.如果页面打开时有字段,或者有设置当前行,会触发一次
4.如果页面上绑定了表格加载数据,会触发两次



这让我很困惑,很多时候希望 文本框上既可以值变更时触发命令,也可以在页面加载后执行一次命令,充当一个命令自动执行器,然而当页面与表格字段不挂钩时,命令就不会在页面加载后执行,当有表格时,居然会执行两次。

希望版主大大能指导一下这个策略,为何这样?有没有一个统一的标准或者说法?



Lay.Li 发表于 2024-2-29 22:43:09

感谢各位大佬的支持~
不清楚您这个问题原因是否和楼主的问题原因是否相同,建议您重新发一个帖子交流哈。
这边儿反馈一下楼主问题的调查结果
=now()是一个比较特殊的公式,因为它计算的是当前的时间,所以页面中只要有数据变动,这个公式都会进行重算。
所以在弹出页面传值时,弹出页面时有数据变化,now函数就会重算,不同时间得到的now的值肯定是不同的,所以就会触发文本框的值变更命令,弹出页面有绑定字段的时候同理,绑定字段再页面加载时也会有数据变化,也会触发now函数的重算,

页面绑定表格也是相同的,绑定表格时,页面加载时会从数据库中去数据,页面数据会发生多次变化,会多次触发now函数的重算,如果这多次变化都显示在文本框中的话,对于用户来说就会看到文本框的内容再不停变化。所以活字格有个合并策略是短时间内值发生变化时,文本框值都先不变,等几十毫秒后,再显示最终结果,然后触发命令。所以页面中绑定表格时,有时会触发一次值变更命令,有时会触发两次


妄想社成员 发表于 2024-2-29 22:49:36

妄想社成员 发表于 2024-2-29 23:01:16


而且这个绑定了表格的,有概率是1,只执行了一次

逛逛逛 发表于 2024-3-1 08:41:27

本帖最后由 逛逛逛 于 2024-3-1 08:42 编辑

用值变更原因过滤,自己控制逻辑呢



妄想社成员 发表于 2024-3-1 09:02:05

逛逛逛 发表于 2024-3-1 08:41
用值变更原因过滤,自己控制逻辑呢

我并不是要实现什么需求,我是要弄清楚这个页面加载后的触发机制

逛逛逛 发表于 2024-3-1 09:08:47

妄想社成员 发表于 2024-3-1 09:02
我并不是要实现什么需求,我是要弄清楚这个页面加载后的触发机制

用这个来输出看看触发的顺序啊:如果加载触发就输出加载,如果公式触发就输出公式

小年糕 发表于 2024-3-1 11:05:14


我大概知道原因:
前一阵我用组件,组件中绑定了属性,同时又写了一个odata公式

在属性变更命令中,弹了个消息

运行,发现会触发2次命令。
但是同样的操作,在文本框中只会触发一次命令,根据我试的结果,可能是下面的原因:
不管是单元格,还是组件,其实值中间都可能会出现多次变更,因为有绑定,有公式,可能还会有传值。
所以正常来说,只要有变更,都会触发命令。
估计文本框单元格做了下处理,特别短时间内的变更,合成一个,不然的话,页面上文本框里面的值会变化,比如从空到a又到b最后逻辑都走完,最终显示的是C,那样岂不是文本框值在短时间内来回变化~
不知道我猜的对不对,等待官方技术支持的回复~~~

Grayson.Shang 发表于 2024-3-1 17:32:32

感谢大佬的支持,现在确实会出现这种情况,若是页面上有值变更,引用NOW()公式的地方就会刷新公式,若是页面上没有值变更,那么NOW()就不会刷新,而当页面上个表格初次加载的时候,会引起NOW()公式两次刷新,这个应该是表格在加载单元格数据的时候,导致页面上单元格的值被改变两次,所以NOW()也被触发了两次。

妄想社成员 发表于 2024-3-1 17:43:09

Grayson.Shang 发表于 2024-3-1 17:32
感谢大佬的支持,现在确实会出现这种情况,若是页面上有值变更,引用NOW()公式的地方就会刷新公式,若是页 ...

内部原理机制是什么呢?这些是我们也测试出来的情况,还有很多情况我们没有测试出来,有必要说清楚这个页面加载后的的触发机制
页: [1] 2
查看完整版本: 9.103 带有命令的文本框值为=NOW(),页面加载后命令执行机制