Hi,
I’d like to highlight the menu item, based on current route param.
I have some nested navigation elements, and one of pages MainPage contains PageControl and BottomMenu
When I attach a HistoryChanged handler to PageControl, I receive a build error:
[Viewport]: System.ArgumentException: method argument length mismatch
Below is my code for those components:
MainPage.ux
<Page ux:Class="MainPage">
<JavaScript>
const onClickBottomMenu = args => {
router.push('main', {}, args.button)
}
const onClickBanner = args => {
router.goto('intro')
}
function onHistoryChanged() {
console.log('history changed')
}
module.exports = {
onClickBottomMenu,
onClickBanner,
onHistoryChanged
}
</JavaScript>
<Router ux:Dependency="router"/>
<DockPanel>
<TopBanner Dock="Top">
<Clicked Handler="{onClickBanner}" />
</TopBanner>
<PageControl HistoryChanged="{onHistoryChanged}">
<Page ux:Name="store"><Text Value="Store" /></Page>
<Page ux:Name="cart"><Text Value="Cart" /></Page>
<Page ux:Name="collect"><Text Value="Collect" /></Page>
<Page ux:Name="more"><Text Value="Mor<e" /></Page>
</PageControl>
<BottomMenu Dock="Bottom" Selected="store">
<OnClickButton Handler="{onClickBottomMenu}" />
</BottomMenu>
</DockPanel>
</Page>
BottomMenu.ux
<Grid ux:Class="BottomMenu" Height="80" Color="#fafafa" ColumnCount="4">
<string ux:Property="Selected" />
<JavaScript>
const items = [{
path: 'store',
label: 'Store'
}, {
path: 'cart',
label: 'Cart'
}, {
path: 'collect',
label: 'Collect'
}, {
path: 'more',
label: 'More'
}]
module.exports = {
items
}
</JavaScript>
<UserEvent ux:Name="onClickButton" />
<OnUserEvent ux:Class="OnClickButton" EventName="onClickButton" />
<Each Items="{items}">
<Rectangle HitTestMode="LocalBounds">
<Text Value="{label}" Alignment="Center" />
<Clicked>
<RaiseUserEvent EventName="onClickButton">
<UserEventArg Name="button" StringValue="{path}" />
</RaiseUserEvent>
</Clicked>
</Rectangle>
</Each>
</Grid>