# \[BUG\] 8.1.0 Perspective - EView with object param not able to read value

**URL:** <https://forum.inductiveautomation.com/t/bug-8-1-0-perspective-eview-with-object-param-not-able-to-read-value/43498>\
**Category:** Ignition\
**Tags:** ignition80, perspective\
**Created:** [February 17, 2021, 5:58am UTC](https://forum.inductiveautomation.com/t/bug-8-1-0-perspective-eview-with-object-param-not-able-to-read-value/43498 "2021-02-17T05:58:15Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [February 17, 2021, 5:58am UTC](https://forum.inductiveautomation.com/t/bug-8-1-0-perspective-eview-with-object-param-not-able-to-read-value/43498/1 "2021-02-17T05:58:15Z")

</div>

If you pass an object to an embedded View, these params can’t be used in the EV; they just use the default values there at save.

I have this View which I embed onto a page:

```auto
{
  "custom": {
    "bitAvail": false,
    "btnAvail": true,
    "itemSelected": "BrowseValue [value\u003dnull, info\u003dnull, configVersion\u003d9]"
  },
  "params": {
    "availType": "table",
    "bitAvail": {
      "bit": "",
      "integerAvailTagPath": ""
    },
    "optionLabel": "FS4157",
    "optionValue": 4157,
    "selectTagPath": "",
    "tableAvail": {
      "avail": true
    }
  },
  "propConfig": {
    "custom.bitAvail": {
      "binding": {
        "config": {
          "fallbackDelay": 2.5,
          "mode": "indirect",
          "references": {
            "1": "{view.params.bitAvail.integerAvailTagPath}"
          },
          "tagPath": "{1}"
        },
        "transforms": [
          {
            "expression": "try(getBit({value}, {view.params.bitAvail.bit}), false)",
            "type": "expression"
          }
        ],
        "type": "tag"
      },
      "persistent": true
    },
    "custom.btnAvail": {
      "binding": {
        "config": {
          "expression": "if({view.params.availType} \u003d \u0027bit\u0027\r\n\t,{view.custom.bitAvail}\r\n\t,{view.params.tableAvail.avail}\r\n)"
        },
        "type": "expr"
      },
      "persistent": true
    },
    "custom.itemSelected": {
      "binding": {
        "config": {
          "bidirectional": true,
          "fallbackDelay": 2.5,
          "mode": "indirect",
          "references": {
            "1": "{view.params.selectTagPath}"
          },
          "tagPath": "{1}"
        },
        "type": "tag"
      },
      "persistent": true
    },
    "custom.thisItemSelected": {
      "binding": {
        "config": {
          "fallbackDelay": 2.5,
          "mode": "indirect",
          "references": {
            "1": "{view.params.selectTagPath}"
          },
          "tagPath": "{1}"
        },
        "transforms": [
          {
            "expression": "{value} \u003d {view.params.optionValue}",
            "type": "expression"
          }
        ],
        "type": "tag"
      }
    },
    "params.availType": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.optionLabel": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.optionValue": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.selectTagPath": {
      "paramDirection": "input",
      "persistent": true
    }
  },
  "props": {
    "defaultSize": {
      "height": 40,
      "width": 100
    }
  },
  "root": {
    "children": [
      {
        "events": {
          "dom": {
            "onClick": {
              "config": {
                "script": "\tself.view.custom.itemSelected \u003d self.view.params.optionValue\n\tsystem.perspective.closePopup(\u0027options-popup\u0027)"
              },
              "scope": "G",
              "type": "script"
            }
          }
        },
        "meta": {
          "name": "Button"
        },
        "position": {
          "basis": "34px",
          "grow": 1
        },
        "propConfig": {
          "props.enabled": {
            "binding": {
              "config": {
                "path": "view.custom.btnAvail"
              },
              "type": "property"
            }
          },
          "props.style.classes": {
            "binding": {
              "config": {
                "path": "view.custom.thisItemSelected"
              },
              "transforms": [
                {
                  "fallback": "",
                  "inputType": "scalar",
                  "mappings": [
                    {
                      "input": false,
                      "output": "Buttons/Body Buttons/Text"
                    },
                    {
                      "input": true,
                      "output": "Buttons/Body Buttons/Text UIElement/MenuSelected"
                    }
                  ],
                  "outputType": "style-list",
                  "type": "map"
                }
              ],
              "type": "property"
            }
          },
          "props.text": {
            "binding": {
              "config": {
                "path": "view.params.optionLabel"
              },
              "type": "property"
            }
          }
        },
        "props": {
          "style": {}
        },
        "type": "ia.input.button"
      },
      {
        "meta": {
          "name": "Icon"
        },
        "position": {
          "basis": "18px",
          "shrink": 0
        },
        "propConfig": {
          "position.display": {
            "binding": {
              "config": {
                "path": "view.params.tableAvail.avail"
              },
              "type": "property"
            }
          }
        },
        "props": {
          "path": "material/insert_emoticon"
        },
        "type": "ia.display.icon"
      }
    ],
    "meta": {
      "name": "root"
    },
    "props": {
      "direction": "column"
    },
    "type": "ia.container.flex"
  }
}

```

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/9/99ebd5c92ec47e563e5ad4ad2cc2750402c7092a.png)  
Params:  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/a/2ae198b94810e4dc756d9663192a909670da9baa.png)

The smiley face’s postion.display is bound to the last param in the screenshot (tableAvail.avail), a boolean. If I embed this onto a page and toggle the tableAvail prop, nothing happens. If it do the same in the View itself, it works

**It works when I don’t use objects**. God damn, spent a day and a half chasing my tail…

```auto
{
  "custom": {
    "bitAvail": false,
    "btnAvail": "",
    "itemSelected": "BrowseValue [value\u003dnull, info\u003dnull, configVersion\u003d9]"
  },
  "params": {
    "availType": "table",
    "bitAvail": {
      "bit": "",
      "integerAvailTagPath": ""
    },
    "bitAvail_bit": "",
    "bitAvail_integerAvailTagPath": "",
    "optionLabel": "FS4157",
    "optionValue": 4157,
    "selectTagPath": "",
    "tableAvail": {
      "avail": true
    },
    "tableAvail_avail": ""
  },
  "propConfig": {
    "custom.bitAvail": {
      "binding": {
        "config": {
          "fallbackDelay": 2.5,
          "mode": "indirect",
          "references": {
            "1": "{view.params.bitAvail_integerAvailTagPath}"
          },
          "tagPath": "{1}"
        },
        "transforms": [
          {
            "expression": "try(getBit({value}, {view.params.bitAvail_bit}), false)",
            "type": "expression"
          }
        ],
        "type": "tag"
      },
      "persistent": true
    },
    "custom.btnAvail": {
      "binding": {
        "config": {
          "expression": "if({view.params.availType} \u003d \u0027bit\u0027\r\n\t,{view.custom.bitAvail}\r\n\t,{view.params.tableAvail_avail}\r\n)"
        },
        "type": "expr"
      },
      "persistent": true
    },
    "custom.itemSelected": {
      "binding": {
        "config": {
          "bidirectional": true,
          "fallbackDelay": 2.5,
          "mode": "indirect",
          "references": {
            "1": "{view.params.selectTagPath}"
          },
          "tagPath": "{1}"
        },
        "type": "tag"
      },
      "persistent": true
    },
    "custom.thisItemSelected": {
      "binding": {
        "config": {
          "fallbackDelay": 2.5,
          "mode": "indirect",
          "references": {
            "1": "{view.params.selectTagPath}"
          },
          "tagPath": "{1}"
        },
        "transforms": [
          {
            "expression": "{value} \u003d {view.params.optionValue}",
            "type": "expression"
          }
        ],
        "type": "tag"
      }
    },
    "params.availType": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.bitAvail_bit": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.bitAvail_integerAvailTagPath": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.optionLabel": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.optionValue": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.selectTagPath": {
      "paramDirection": "input",
      "persistent": true
    },
    "params.tableAvail_avail": {
      "paramDirection": "input",
      "persistent": true
    }
  },
  "props": {
    "defaultSize": {
      "height": 40,
      "width": 100
    }
  },
  "root": {
    "children": [
      {
        "events": {
          "dom": {
            "onClick": {
              "config": {
                "script": "\tself.view.custom.itemSelected \u003d self.view.params.optionValue\n\tsystem.perspective.closePopup(\u0027options-popup\u0027)"
              },
              "scope": "G",
              "type": "script"
            }
          }
        },
        "meta": {
          "name": "Button"
        },
        "position": {
          "basis": "34px",
          "grow": 1
        },
        "propConfig": {
          "props.enabled": {
            "binding": {
              "config": {
                "path": "view.custom.btnAvail"
              },
              "type": "property"
            }
          },
          "props.style.classes": {
            "binding": {
              "config": {
                "path": "view.custom.thisItemSelected"
              },
              "transforms": [
                {
                  "fallback": "",
                  "inputType": "scalar",
                  "mappings": [
                    {
                      "input": false,
                      "output": "Buttons/Body Buttons/Text"
                    },
                    {
                      "input": true,
                      "output": "Buttons/Body Buttons/Text UIElement/MenuSelected"
                    }
                  ],
                  "outputType": "style-list",
                  "type": "map"
                }
              ],
              "type": "property"
            }
          },
          "props.text": {
            "binding": {
              "config": {
                "path": "view.params.optionLabel"
              },
              "type": "property"
            }
          }
        },
        "props": {
          "style": {}
        },
        "type": "ia.input.button"
      },
      {
        "meta": {
          "name": "Icon"
        },
        "position": {
          "basis": "18px",
          "shrink": 0
        },
        "propConfig": {
          "position.display": {
            "binding": {
              "config": {
                "path": "view.params.tableAvail.avail"
              },
              "type": "property"
            }
          }
        },
        "props": {
          "path": "material/insert_emoticon"
        },
        "type": "ia.display.icon"
      },
      {
        "meta": {
          "name": "Icon_0"
        },
        "position": {
          "basis": "18px",
          "shrink": 0
        },
        "propConfig": {
          "position.display": {
            "binding": {
              "config": {
                "path": "view.custom.btnAvail"
              },
              "type": "property"
            }
          }
        },
        "props": {
          "color": "#FA0000",
          "path": "material/insert_emoticon"
        },
        "type": "ia.display.icon"
      }
    ],
    "meta": {
      "name": "root"
    },
    "props": {
      "direction": "column"
    },
    "type": "ia.container.flex"
  }
}

```

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/f/8/f85603a44838b10cf608aa02817a2aebc4e23a8c.png)

I stopped using the objects and used the bottom 3 properties instead and my sanity was regained

---

<div class="post-metadata">

**Author:** ![cmallonee](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/cmallonee/32/6416_2.png) [@cmallonee](https://forum.inductiveautomation.com/u/cmallonee)\
**Post date:** [February 17, 2021, 6:51am UTC](https://forum.inductiveautomation.com/t/bug-8-1-0-perspective-eview-with-object-param-not-able-to-read-value/43498/2 "2021-02-17T06:51:27Z")

</div>

Something else is likely happening in your View. I tried this and had no issues using a boolean inside an object param.  
[BoolInsideObjAsParam.mov.zip](https://forum.inductiveautomation.com/uploads/short-url/kLxgwbRv6ty9N2LyR8Sd0cDuw3s.zip) (1003.7 KB)

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [February 17, 2021, 6:55am UTC](https://forum.inductiveautomation.com/t/bug-8-1-0-perspective-eview-with-object-param-not-able-to-read-value/43498/3 "2021-02-17T06:55:29Z")

</div>

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/8/986fdb679b92af8dfc7d90245a224177025b2f0d.png)

I pasted that json into a new view, then embedded it onto a new View, and this is what I see with ` params.tableAvail.avail = false` (smiley is still displayed). Did you test in 8.1.0?

You’ve right though, I created a new EV and embedded that and it works… hmm

---

<div class="post-metadata">

**Author:** ![cmallonee](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/cmallonee/32/6416_2.png) [@cmallonee](https://forum.inductiveautomation.com/u/cmallonee)\
**Post date:** [February 17, 2021, 7:07am UTC](https://forum.inductiveautomation.com/t/bug-8-1-0-perspective-eview-with-object-param-not-able-to-read-value/43498/4 "2021-02-17T07:07:41Z")

</div>

Something is wrong with the View you supplied, but I haven’t been able to identify _what_. When I attempt to delete some of the custom properties form the view, they begin re-appearing, and claiming `Bad_Quality`. I created a new View, gave it the same _basic_ setup you have (minus the bindings and custom properties), but with the same params, and when I use my View it works as expected.

My testing was done in a nightly build of 8.1.3.
