# Embedded view: binding updates even when unrelated parameter changes

**URL:** <https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [October 28, 2025, 8:30pm UTC](https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763 "2025-10-28T20:30:55Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Aiasa21](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@Aiasa21](https://forum.inductiveautomation.com/u/Aiasa21)\
**Post date:** [October 28, 2025, 8:30pm UTC](https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763/1 "2025-10-28T20:30:55Z")

</div>

Hello everyone,

I’m asking for help with a strange behavior I’m experiencing when using an embedded view.

I have two custom properties in the view:

- **ds** (dataset)

- **key** (text)

I simply pass these two properties to the parameters of the embedded view.

Inside the embedded view, I have a simple text field with an expression binding like this:

```python
coalesce(try({view.params.ds}[0, "label"], ""), "")

```

where _"label"_ is the name of the dataset column.

Up to this point, everything works fine — the value from the dataset is correctly loaded into the text field. Now I’ll describe the issue step by step.

1. The text field binding loads the value from the dataset column, for example **"M\_L"**.

2. The user edits the text field to **"G\_O"** , and the value is correctly changed without being overwritten.

3. Then, the user modifies the **key** custom property.

4. What happens is that the text field’s expression binding is re-executed, causing it to reload the value from the dataset — so the text field value goes back to **"M\_L"**.

I’d like to understand if it’s normal for the binding to re-evaluate every time a parameter is updated, even if that parameter is not directly linked to the binding itself.

Thanks for the help.

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [October 28, 2025, 8:59pm UTC](https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763/2 "2025-10-28T20:59:55Z")

</div>

I assume the text field value is bound to `key`? If so, make sure the binding has `bidirectional` checked.

---

<div class="post-metadata">

**Author:** ![Aiasa21](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@Aiasa21](https://forum.inductiveautomation.com/u/Aiasa21)\
**Post date:** [October 28, 2025, 9:39pm UTC](https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763/3 "2025-10-28T21:39:35Z")

</div>

It is not, this is the point, text field is bound with this expression:

`coalesce(try({view.params.ds}[0, "label"], ""), "")`

`key` is simply passed as a parameter to the embedded view, and within that view it has no binding at all. So I don’t understand why the expression binding re-evaluate when the value of `key` change.

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [October 29, 2025, 4:53am UTC](https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763/4 "2025-10-29T04:53:43Z")

</div>

I think you're seeing this because you're using a dataset as a parameter.

Datasets aren't really first class objects in Perspective, and I'd bet there is something lossy in the Gateway -\> Client -\> Gateway sync process that's causing spurious change events to be detected for datasets.

It's worth noting that this issue doesn't happen with my [Embedded View + component](https://docs.mussonindustrial.com/ignition/embr-periscope/components/embedded-view-plus/), so I'd wager that these extra change detections are coming from the Perspective client side of things.

---

<div class="post-metadata">

**Author:** ![Aiasa21](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@Aiasa21](https://forum.inductiveautomation.com/u/Aiasa21)\
**Post date:** [October 29, 2025, 7:07am UTC](https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763/5 "2025-10-29T07:07:07Z")

</div>

Thanks for the answer @bmusson.

I ran a test, changing the query's return type from dataset to json and modifying the text field's expression binding to `coalesce( try( {view.params.ds}[0]['label'], ""), "")`. Now the problem doesn't seem to occur anymore.

So, given that I need to use JSON, I'm facing another issue. Initially, my expression binding used the `lookup()` function to find a specific value in the "ZST\_CODPAR" column and extract the data from the "VAL\_PAR" column:

`coalesce( try( lookup( {view.params.dati_ricerca.ds_scheda_lavoro}, {this.custom.specifico}, "", "ZST_CODPAR", "VAL_PAR" ), ""), "")`

Now that the return is JSON and not a dataset, I can no longer use `lookup()`. What would be the best solution to access this data? I would like to avoid using `runScript()` or a script transform.

Here is the JSON, for example:

JSON

```python
[
  {
    "ZST_CODPAR": "VAL_0",
    "VAL_PAR": "45"
  },
  {
    "ZST_CODPAR": "VAL_1",
    "VAL_PAR": "45"
  }
]

```

I'll also take this opportunity to ask where I can download the module you mentioned. I followed the link, but it took me to the version for Ignition 8.3, I’m using the 8.1.

Thank you.

---

<div class="post-metadata">

**Author:** ![Aiasa21](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@Aiasa21](https://forum.inductiveautomation.com/u/Aiasa21)\
**Post date:** [October 29, 2025, 9:19am UTC](https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763/6 "2025-10-29T09:19:46Z")

</div>

For the time being, I've "resolved" it as follows:

1. I retrieve the data using a Named Query, setting its return format to JSON instead of dataset.

2. I pass the JSON as a parameter to the Embedded View.

3. In the Embedded View, I created a custom property `ds`, bound it to the incoming JSON `params`, and used a script transform to convert it back into a dataset.

4. I set the text field bindings as they were originally, but pointing to this new custom property instead of the view's `params`.

This way, the data is not overwritten.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 29, 2025, 11:07am UTC](https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763/7 "2025-10-29T11:07:58Z")

</div>

If you have my Integration Toolkit, you can use the `where()` expression function and then square bracket operations to do the equivalent of `lookup()` with lists of dictionaries. Perhaps this:

```python
coalesce(
    try(
        where(
            {view.params.dati_ricerca.ds_scheda_lavoro},
            it()["ZST_CODPAR"] = {this.custom.specifico}
        )[0]["VAL_PAR"]
        ""
    ),
    ""
)

```

---

<div class="post-metadata">

**Author:** ![Aiasa21](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@Aiasa21](https://forum.inductiveautomation.com/u/Aiasa21)\
**Post date:** [October 29, 2025, 1:06pm UTC](https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763/8 "2025-10-29T13:06:17Z")

</div>

@pturmel, I’ve installed it and make it works with your code, thanks for the suggestion, so I removed the double passage with the script transform.

PS: for completeness, in case anyone needs it, the comma after

`"]"` is missing

`)[0]["VAL_PAR"],`

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [October 29, 2025, 1:08pm UTC](https://forum.inductiveautomation.com/t/embedded-view-binding-updates-even-when-unrelated-parameter-changes/111763/9 "2025-10-29T13:08:52Z")

</div>

Anytime that you can use an expression over script transforms, especially with Phil’s toolkit, it’s a huge performance win.
