2013-04-15 4 views
0

У меня проблема со списком/подробным рисунком. У меня есть класс Article, наследующий от QObject, определяющий некоторые свойства (title, updated и content - те, которые имеют значение сейчас). Чтобы заполнить мой (QML) ListView, у меня есть C++ GroupDataModel, заполненный некоторыми Article*. Вот мой список-х onTriggered:BlackBerry 10 Cascades app stuck влияет на свойство

onTriggered: { 
    if (indexPath.length > 1) { 
     currentArticle = dataModel.data(indexPath); 
     var page = articlePageDefinition.createObject(); 
     nav.push(page) 
    } 
}

Как вы можете догадаться, articlePageDefinition определяет страницу, используя верхний currentArticle свойства.

Теперь, когда я показываю статью, один раз, он работает нормально. Я могу вернуться, нажать на тот же элемент списка, отобразить те же самые Article детали, отлично работает. Но когда я выбираю вторую статью, приложение зависает. Я могу вернуться в свою навигационную панель, но больше не могу нажимать на элементы списка. Я попытался добавить несколько журналов, onTriggered застрял на currentArticle = dataModel.data(indexPath);. На этом этапе я могу регистрировать каждое свойство dataModel.data(indexPath) без каких-либо проблем. Я пытался не создавать/нажимать страницу, просто влиять на currentArticle и отображать некоторые ее свойства, она тоже работает отлично. Я действительно не понимаю, что я делаю неправильно здесь, любая помощь оценивается.

В случае, если вы хотите увидеть больше кода, здесь есть все: https://github.com/Kernald/tt-rss-bb10/tree/e29e3b616aa179dd42f66804ecc20a6a45b6bb22

+0

Я не знаю, что может вызвать вашу проблему, но я бы посоветовал вам не использовать глобальную переменную Javascript для «currentArticle». Предпочитаете использовать свойство или функцию setData – Benoit

+0

Я попытался сегодня утром заменить свойство 'currentArticle' свойством' article' на странице подробностей, он работает нормально. Вы правы, что это хороший способ сделать это, и я сохраню его таким образом. Но мне все еще интересно узнать причину оригинальной проблемы. –

ответ

1

Вот что может вызвать проблемы вашего испытываете:

  1. Вы создаете articlePage и связать его данные с «currentArticle "глобальная переменная
  2. Когда вы возвращаетесь, статьяPage не удаляется.
  3. Вы открываете другой экземпляр этой же статьи. Последний по-прежнему привязывает свои данные к тому же экземпляру currentArticle.
  4. Когда вы вернетесь и нажмите другой элемент: предыдущая статья-страница все еще существует в памяти. Он привязывается к «текущей статье». Проблема в том, что данные «currentArticle» не изменились, а объект, на который ссылается «currentArticle». После этого связывание Qml просто не работает.
+0

Это кажется логичным. Есть ли способ развязать свойство или принудительно удалить страницу? –

+0

Просто напишите на панели навигации: onPopTransitionEnded: {page.destroy(); } – Benoit

+0

Страница эффективно уничтожена, но она не устраняет первоначальную проблему. Более странную вещь, которую я забыл упомянуть в первом посте, после того, как приложение «разбилось, но на самом деле», я не могу его остановить (значок остается серым), если я не перезагружу телефон. –

0

У меня было подобное поведение моего приложения, но я не проверял ваш код github, если причина может быть одинаковой. Я думаю, вы можете проверить это быстрее, чем я.
При удалении и добавлении элемента списка с тем же индексом код застревает. Я удалил запись о действии пользователя и добавил новый в этом месте, и он застрял. Это известная проблема для BB10, я нашел здесь: https://developer.blackberry.com/cascades/download/releasenotes/#known

+0

Нет, я не удаляю элементы в списке. Я добавляю их, когда я инициализирую список, тогда это всего лишь шаблон списка/детали, где список доступен только для чтения. Однако ваш улов будет полезен через пару дней, спасибо ... –

 Смежные вопросы

  • Нет связанных вопросов^_^