How can i set this: DefaultTemplate="{start}", get 'start' from my JS code?'

It doesn’t work :frowning:

<App>
    <Router ux:Name="router"/>
    <JavaScript>
    var Storage = require("FuseJS/Storage");
    var Observable = require("FuseJS/Observable");
    var start;
    Storage.read("login.txt")
    .then(function(content) {
        if (content.length != 0) start = "main";
        else start = "login"; 
    })
    module.exports = {
        start: start
    };
    </JavaScript>
    <Navigator DefaultTemplate="{start}">
        <LoginPage ux:Template="login" router="router" />
        <MainPage ux:Template="main" router="router" />
        <WebWeb ux:Template="webweb" router="router"/>
    </Navigator>
</App>

To use “start” outside of your Javascript code it has to be an Observable.

var start = Observable();

change its value like this:

start.value = "main";

that should work.

I have white screen on this:

<App>
    <Router ux:Name="router"/>
    <JavaScript>
    var Storage = require("FuseJS/Storage");
    var Observable = require("FuseJS/Observable");
    var start = Observable();
    Storage.read("login.txt")
    .then(function(content) {
        if (content.length != 0) {
            start.value = "main";
            console.log(start.value);
        } 
    }, function(error) {
        start.value = "login";
        console.log(start.value);
    });
    module.exports = {
        start: start.value
    };
    </JavaScript>
    <Navigator DefaultTemplate="{start}">
        <LoginPage ux:Template="login" router="router" />
        <MainPage ux:Template="main" router="router" />
        <WebWeb ux:Template="webweb" router="router"/>
    </Navigator>
</App>

And in exports without .value too

You need to return the entire observable. Not start.value. Like this:

    module.exports = {
        start: start
    };

Anders Bondehagen wrote:

You need to return the entire observable. Not start.value. Like this:

    module.exports = {
        start: start
    };

It doesn’t work too :frowning:

Have same issue, would be nice to have it working ^^

Curious! Just to sate my curiosity, try this:

var start = Observable("main");
exports.start = start;

You can generally use the exports object directly without redeclaring it, and this might actually solve your problem here.

Its still same, white screen :S

Hi @hybridPa

The DefaultTemplate property is not ment to be databound like that. In your case, you should just navigate using the navigator when you get the data you need from storage:

router.goto(thePageInQuestion);

With your code it would look something like this:

Storage.read("login.txt")
    .then(function(content) {
        if (content.length != 0) {
            router.goto("main");
            console.log(start.value);
        } 
    }, function(error) {
        router.goto("login");
        console.log(start.value);
    });

I hope this helps :slight_smile:

Thanks a lot ^^ definitely will :)))