Null property at initial loading of a view

Hi

I have a setup like this. An expression structure binding to custom properties that are constants.
When running a script after those bindings I get an error of having None values as inputs. After some seconds those constant values change from None to the actual values that are written in custom properties to finally display the expected result.

Is there a way to make Wait On All work? It is enable by default but it isn't waiting until all inputs are loaded.

This is Ignition 8.1.33.

An expression structure binding will fire every time any bound property gets a new value.

In your case it will fire every time key, key_1 or key_2 changes value. That is chaining down from your custom properties which will I understand to be bound to constants.

It sounds like your binding is firing each time one of those constants loads.

Are they actual constants or are they parameters? I wouldn't recommend loading constants into parameters. You want your parameters to be things that drive the binding. You can load constants as property references.

Edit, I missed the arrow pointing to wait on all. That's why you're seeing a delay. My other advice still stands. Typically you don't want to bind to things that are constants.

What would be a better way of doing it? I do need an input to my script. Inputs are constants but still variables between components. So the script arranges the variable part, returning based on those inputs.

This is a contradiction. They clearly aren't constants if you are writing to them.

There are no bindings on those custom properties that are inputs to that expression structure. That's why I called them constants. I don't know if there is a better way of explaining it. Or even better, a better way of working with this component.

If the inputs are constants, would the output not be a constant? And therefore not need a binding? (And the delay to compute it?)

I'm a bit confused about the use-case here.

The variable part is where the information is stored and the result. Once is retrieved it will most likely not change.
I think the answer is, technically yes. You know the answer from the combination of those three inputs but if someone changes the stored information then the result would still be that old constant. So it's flexible from the source.

Sorry for the slow response. I was in the field this morning. You could put a constant in a property and reference it in the script without passing it in. I don't know if a constant loading is triggering your binding but you can rule that out by not passing it in to the parameter portion of your expression structure binding.

Thanks for the response.

I will try it out by just writing true in a expression binding and then executing the script. Grabbing those values straight from the script.
I wonder what will be first, the true execution or custom properties being initialized as None.

Or, just use a runScript() expression in an expression binding.