【发布时间】:2013-04-15 18:20:25
【问题描述】:
我对列表/详细信息模式有疑问。我有一个 Article 类,继承自 QObject,定义了一些属性(title、updated 和 content 是目前最重要的属性)。为了填充我的 (QML) ListView,我有一个 C++ GroupDataModel,填充了一些 Article*。这是我的名单onTriggered:
onTriggered: {
if (indexPath.length > 1) {
currentArticle = dataModel.data(indexPath);
var page = articlePageDefinition.createObject();
nav.push(page)
}
}
您可以猜到,articlePageDefinition 使用上面的currentArticle 属性定义了一个页面。
现在,当我显示 articlePage 一次时,它工作正常。我可以返回,单击相同的列表项,显示相同的Article 详细信息,效果很好。但是当我选择第二篇文章时,该应用程序就冻结了。我可以返回导航窗格,但不能再单击列表项。我尝试添加一些日志,onTriggered 卡在currentArticle = dataModel.data(indexPath); 上。此时,我可以毫无问题地记录dataModel.data(indexPath) 的每个属性。我试图不创建/推送页面,只是影响currentArticle 并显示它的一些属性,它也可以正常工作。我真的不明白我在这里做错了什么,感谢任何帮助。
如果您需要查看更多代码,一切都在这里:https://github.com/Kernald/tt-rss-bb10/tree/e29e3b616aa179dd42f66804ecc20a6a45b6bb22
【问题讨论】:
-
我不知道是什么导致了您的问题,但可以肯定的是,我建议您不要将 JavaScript 全局变量用于“currentArticle”。更喜欢使用属性或函数来设置数据
-
我今天早上尝试用
article属性替换详细信息页面中的currentArticle属性,它工作正常。你是对的,这是做这件事的好方法,我会保持这种方式。但是我还是很好奇原来问题的原因。
标签: qml blackberry-10 blackberry-cascades