I'm trying to use a Loader
to load full screen components to changing screens in a Symbian/QML project. This doesn't feel like the correct way to do it, so I'm probably missing something obvious.
The example I'll use is a button on one screen which should open a full screen WebView (a.k.a ChildBrowser). I'd like to make the ChildBrowser a re-usable component, so need to pass the URL to it.
I've tried building a Javascript file with a pragma library
:
.pragma library
var map = {};
function put(key, value) {
map[key] = value;
}
function get(key) {
return map[key];
}
For want of a better title, we call this intent.js
.
The screen holding the button:
import "intent.js" as Intent
Button {
onButtonClicked: {
Intent.put("url", "http://example.com");
console.log("Going to " + Intent.get("url"));
}
}
Later on, in ChildBrowser.qml
, I'm importing "intent.js" and then getting the Intent.get("url"). This is undefined
.
My questions are:
- is using a
Loader
the intended way to build and transition between screens? - how do you pass parameters between screens?
- how do you maintain state across the lifetime of the app? I'm especially interested in building controllers and models in Javascript.
I'm sure these are newbie questions, so a set of links to the relevant documentation is probably all that is needed; I suspect not however.
Loader is a good way to avoid creating items until you need them.
Assuming ChildBrowser has a "url" property, you could do something like this:
Adding a "url" property to your ChildBrowser is simply a matter of having a property on the root item, e.g.