Javascript in qml error.
-
@<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
...
<channel>
<item>
<title>A blog post</title>
<pubDate>Sat, 07 Sep 2010 10:00:01 GMT</pubDate>
<id> 0 </id>
</item>
<item>
<title>A blog post</title>
<pubDate>Sat, 07 Sep 2010 10:00:01 GMT</pubDate>
<id> 1 </id>
</item>
<item>
<title>A blog post</title>
<pubDate>Sat, 07 Sep 2010 10:00:01 GMT</pubDate>
<id> 2 </id> </item>
<item>
<title>A blog post</title>
<pubDate>Sat, 07 Sep 2010 10:00:01 GMT</pubDate>
<id> 1 </id>
</item>
<item>
<title>Another blog post</title>
<pubDate>Sat, 07 Sep 2010 15:35:01 GMT</pubDate>
</item>
</channel>
</rss>@Xml file. its an example file
-
Hello,
I don't really understand what you are trying to achieve. From your code It seems you want all your list items to have the same title. Is it really what you want? If you just want the title corresponding to each item on your XML you can change Chk.title with title in your QML and you don't need your js file.
Good luck! -
So in your javascript try:
@
.pragma libraryfunction getTitle(model, index){
return model.get(index).title;
}
@And in your qml Chk.getTitle(model, index);
Note that I'm not sure you can directly use model in your JavaScript I remember reading some sync stuff but I don't remember exactly what it was (maybe to do with WorkerScript element).
-
Just for later, sync must be applied when changing models from WorkerScripts.
See:
"ListModel documentation":http://qt-project.org/doc/qt-4.8/qml-listmodel.html#using-threaded-list-models-with-workerscript -
I tried this in the same .qml file and I got this error
@Component.onCompleted: {
console.log(model.get(1).title);
}@
TypeError: Result of expression 'model.get(1)' [undefined] is not an object.
Qml debugging is enabled. Only use this in a safe environment! -
width:400
height:width
property int index:0ListView {
width: 180; height: 300
model: model
delegate: Text { text:title+ ": " + pubDate+id
}
XmlListModel {
id: model
source: "example.xml"
query: "/rss/channel/item"XmlRole { name: "title"; query: "title/string()" } XmlRole { name: "pubDate"; query: "pubDate/string()" } XmlRole { name: "id"; query: "id/string()" }}
}
Component.onCompleted:console.log(model.get(0).title);
}@