Show currenctly selected page in navigationbar

Hi!

I have a navigation menu docked to the bottom of the app. The app is using multi-level navigation.

What would be best practice to keep an icon/menu-element in a selected state after navigating to the selected router destination?

Hi Pål,

one decent way is to have a stand-alone JavaScript module that holds a list of your pages, where for each of them you have an Observable boolean property to store the active state in.

Then, as you navigate (or from <Activated>) you set which page is active.

Here’s what the JS module (stored in pages.js) would look like. Code not tested:

var Observable = require("FuseJS/Observable");
var pages = [
    {name: "pageOne", isActive: Observable(true)},
    {name: "pageTwo", isActive: Observable(false)},
    {name: "pageThree", isActive: Observable(false)}
];

function setActive(name) {
    pages.forEach(function(p) {
        if (p.name == name) {
            p.isActive.value = true;
        } else {
            p.isActive.value = false;
        }
    });
}

module.exports = {
    setActive: setActive
    pages: pages
};

And then, you could access it from the navigation menu like this:

<StackPanel ux:Class="NavigationMenuBar">
    <JavaScript>
    var Pages = require("pages.js");
    module.exports = {
        pages: Pages.pages
    };
    </JavaScript>
    <Each Items="pages">
        <WhileTrue Value="{isActive}">
        </WhileTrue>
        <WhileFalse Value="{isActive}">
        </WhileFalse>
    </Each>
</StackPanel>