At the beginning, I would like to say that using alias on ROKU is kinda cool thing to do. Unfortunately, the same could not be said for the title of this blog post.
Let's say that you would like to change the field value of your child component outside of his parent node.
You would also like to avoid doing that with callFunc or with using observers due to unnecessary boilerplate code.
When you think about it, you actually don't want/need to do any extra stuff besides just changing the value of the field.
Here is where use of alias can come into play.
Example:
Here is our child component:
<?xml version="1.0" encoding="utf-8"?>
<component name="childComponent" extends="Group">
<script type="text/brightscript" uri="./childComponent.brs"/>
<interface>
<field id="changeMe" type="string" />
</interface>
</component>`
We have a basic childComponent
that has a field defined on interface
with the id="changeMe"
and since we did not defined the value, default value for this field is an empty string.
Now let's add this child component to it's parent.
<?xml version="1.0" encoding="utf-8"?>
<component name="parentComponent" extends="Group">
<script type="text/brightscript" uri="./parentComponent.brs"/>
<children>
<childComponent id="childId"/>
</children>
<interface>
<field id="changeFieldInChildComponent" alias="childId.changeMe" type="string" />
</interface>
</component>
Noticed something interesting in the parentComponent
?
Take a look at this line:
<?xml version="1.0" encoding="utf-8"?>
<field id="changeFieldInChildComponent" alias="child.changeMe" type="string"/>
Yeah, that little thing is called alias
and it will allow us to do exactly what we want!
Let's change the value of the changeMe
field of the child component outside of the parent.
So in a component/node outside of parent which has access to our parentComponent
, You should be able to to this:
m.parentComponent.changeFieldInChildComponent = "I'm not an empty string anymore"
And that's it! Field changeMe
of a childComponent
now should have the value of "I'm not an empty string anymore"
.
This also works with native ROKU component fields.
Top comments (0)