[BUG] Chained Perspective bindings not always updating when the top link updates


I have a rather convoluted View where there are multiple embedded Views that all pass the same object parameter down the chain. I’ve noticed that sometimes the last two chained Views are getting the updates when the previous chained parameter changes.

Example (hopefully this can be followed…):
This is how it should be and how it is most of the time:
(The coloured rectangular borders in the graphic and in the project browser show which parts are which)

Verbosely described:
YELLOW is an embedded View. It has a param called qrControlEnable. It’s embedded into CYAN View and its qrControlEnable parameter is bound to CYAN’s qrControlEnable param.

CYAN is an embedded View. It has a param called qrControlEnable. It’s embedded into TabContainer in the main View and its qrControlEnable parameter is bound to the main View’s custom.controlAccess parameter.

Sometimes, these get out of sync with each other, such as below. Notice that the green highlighted “racking” key values are different from the red highlighted ones. Note that the 2nd green highlighted params that should be being passed into CYAN is failing: the “racking” key value in the param being passed is false, but the value inside of the embedded View is still true

Basically, the qrControlEnable key values change when QR codes are scanned. We have individual QR codes per tank per tank device to scan to enable control of different devices attached to the tanks (racking valve, sump valve, gas valve, etc.). Only one device can be controlled at a time (in order to prevent accidental opening of the wrong valves), so the operator must scan the QR beside the physical valve first, then they can operate it. Every new scan will “clear” the qrControlEnable param object (set the key values to false). However we’ve found that, if they scan a QR for a device attached to a particular tank, it correctly sets the enable key value for that device. When the operator changes the tank number however, this fires off a message that wipes the qrControlEnable param on the view (which should then trickle down into the embedded views), however this is when it’s not tickling down to the EVs and they are able to take control of the previously scanned device but for the new tank number. If they change the tank number again, it works and the EV params then update.

Edit: Additional screenshot:

PS I also have a support case for this.

I have worked around this with a dodgy solution… I put a message handler inside of the embedded view (CYAN) which writes the payload to the qrControlEnable prop. Then whenever the main View’s controlAccess prop changes, I write this into the payload of a message to the EV’s message handler…