Expression binding not triggering as expected

In a Perspective view, we've got a property with an expression structure binding like this:

The problem is that it never seems to trigger when siteConfigVariableUpdateTime changes...

If we change the binding to be a simple property binding watching just siteConfigVariableUpdateTIme it does trigger when that property changes.

We do expression structure bindings like this often and they normally work just fine. The only big difference I can see from our normal usage is that the two properties are coming from different high level structures ("view" versus "session"). Could that be the issue or is something else going on here?

Yes, we tried it with "Wait On All" disabled and it made no difference.

UPDATE: As an experiment, I duplicated session.custom.siteConfigVariableUpdateTime in the view's properties as view.custom.siteConfigVariableUpdateTIme and using that as the expression source works just fine. That's another bit of evidence that the issue is related to expression structures pulling properties from different high level structures. (Tested on Ignition 8.1.25)

UPDATE2: Tried another quick experiment with an expression structure containing only session.custom.siteConfigVariableUpdateTime in it and it still didn't trigger properly. Maybe expression structures just don't like session properties?

I created a quick dummy view that will update a session custom property and view bindings in an expression structure binding and it works as I would expect.

How is the value for session.custom.siteConfigVariableUpdateTime being set?
What type of data is it storing (I am guessing a date, but just want to be sure)?

If you do a binding to the different properties directly in something like a label (outside of an expression binding) are you seeing them update? If so, if you do an expression structure binding to that value, does the behavior change at all?


This is the binding config from session.custom.siteConfigVariableUpdateTime:

  "type": "tag",
  "config": {
    "fallbackDelay": 2.5,
    "mode": "direct",
    "tagPath": "[default]SFCloudUserConfig/update_time"

It's a tag that is written to by various operations to indicate when any of a group of variables have been updated. It holds a timestamp of when the update was done, but we only really ever use it as a trigger to go look at those other variables.

If I toss in a label component and bind the text to session.custom.siteConfigVariableUpdateTime, I can see the text label changing even when the structure binding is not being triggered. If I then update the structure binding to point to that label's text property instead of the session property directly, it does trigger.

Would it be possible to export a copy of the project you are using with the following:

  1. The problematic view
  2. Any embedded views that might be used in the problematic view
  3. The Perspective properties resources

And send them to me in a Direct Message? I want to try and replicate the case where this is happening.


Stupid typos. Feeling embarrassed.

1 Like