Qml BlackBerry 10 Cascades应用程序卡住影响性能

Qml BlackBerry 10 Cascades应用程序卡住影响性能,qml,blackberry-10,blackberry-cascades,Qml,Blackberry 10,Blackberry Cascades,我对列表/详细模式有问题。我有一个Article类,继承自QObject,定义了一些属性(title,updated和content是目前最重要的属性)。为了填充我的(QML) ListVIEW,我有一个C++ GROPATDATAMODEL < /C>,里面有一些文章*/COD>。这是我的列表的onTriggered: onTriggered: { if (indexPath.length > 1) { currentArticle = dataModel.data(

我对列表/详细模式有问题。我有一个Article类,继承自
QObject
,定义了一些属性(
title
updated
content
是目前最重要的属性)。为了填充我的(QML)<代码> ListVIEW,我有一个C++ <代码> GROPATDATAMODEL < /C>,里面有一些<代码>文章*/COD>。这是我的列表的
onTriggered

onTriggered: {
    if (indexPath.length > 1) {
        currentArticle = dataModel.data(indexPath);
        var page = articlePageDefinition.createObject();
        nav.push(page)
    }
}
您可以猜到,
articlePageDefinition
使用上面的
currentArticle
属性定义页面

现在,当我显示一次文章页面时,它工作正常。我可以返回,单击相同的列表项,显示相同的
文章
详细信息,效果非常好。但是,当我选择第二篇文章时,应用程序有点冻结。我可以回到我的导航窗格,但我不能再单击列表项了。我试图添加一些日志,
onTriggered
被困在
currentArticle=dataModel.data(indexPath)上。此时,我可以毫无问题地记录
dataModel.data(indexPath)
的每个属性。我试着不创建/推送页面,只是影响
currentArticle
并显示它的一些属性,它也工作得很好。我真的不明白我做错了什么,谢谢你的帮助


如果您需要查看更多代码,所有内容都在这里:

这里是导致您的问题的原因:

  • 创建articlePage并将其数据绑定到“currentArticle”全局变量
  • 返回时,文章页不会被删除
  • 您可以打开同一文章页的另一个实例。最后一个仍然将其数据绑定到同一个currentArticle实例
  • 当您返回并单击另一项时:上一个articlePage仍存在于内存中。它绑定到“currentArticle”。问题是,改变的不是“currentArticle”的数据,而是“currentArticle”引用的对象。然后Qml绑定器就失败了

  • 我的应用程序也有类似的行为,但如果原因相同,我没有检查你的github代码。我想你能比我更快地证实这一点。

    删除和添加具有相同索引的列表项时,代码会被阻塞。我删除了一个关于用户操作的条目,并在那个地方添加了一个新条目,它被卡住了。这是BB10的一个已知问题,我在这里发现:

    我不知道是什么导致了您的问题,但可以肯定的是,我建议您不要在“currentArticle”中使用Javascript全局变量。更喜欢使用属性或函数来设置数据我今天早上试图在详细信息页面中将
    currentArticle
    属性替换为
    article
    属性,效果很好。你说得对,这是个好办法,我会一直这样做的。但我仍然对最初问题的原因感到好奇。这似乎是合乎逻辑的。有没有办法解除绑定属性或强制删除页面?只需在navigationPane上写入:onPopTransitionEnded:{page.destroy();}页面现在已被有效地销毁,但无法解决最初的问题。更奇怪的是,我在最初的帖子中忘了提到,一旦应用程序“崩溃但不是真的”,除非我重新启动手机,否则我无法停止它(图标保持灰色)。不,我不会删除列表中的项目。我在初始化列表时添加它们,然后它只是一个列表/细节模式,其中列表是只读的。不过,你的渔获量几天后就会有用了,谢谢。。。