У меня есть ListView
, где отображаемое в данный момент modelData
изменяется, когда кнопка переключается между несколькими вариантами отдел .Если у одного из этих отделов нет данных, мой delegate
продолжает показывать данные предыдущего списка, пока не достигнет нового раздела modelData
с данными.
Что я хочу сделать, это когда модель 'empty '(будучи неопределенным, что может произойти, когда ключ, который он ищет, еще не создан в моей базе данных Firebase, или в настоящее время нет видимых элементов), вместо этого отображается текст / изображение;то есть, "Двигайся сейчас, здесь ничего не видно".
Моя модель основана на JSON, пример ниже.и мой calendarUserItems
является корневым узлом нескольких дочерних элементов в моей базе данных Firebase, целью моего AppButton.groupCycle
было также добавить дополнительное направление к каждому дочернему узлу, фильтруя данные по нему для просмотра и редактирования на странице.
Пример моего кода:
Page {
id: adminPage
property var departments: [1,2,3,4]
property int currGroupIndex: 0
AppButton {
id: groupCycle
text: "Viewing: " + departments[currGroupIndex]
onClicked: {
if (currGroupIndex == departments.length - 1)
currGroupIndex = 0;
else
currGroupIndex++;
}
}
ListView {
model: Object.keys(dataModel.calendarUserItems[departments[currGroupIndex]])
delegate: modelData.visible ? currentGroupList : emptyHol
Component {
id: emptyHol
AppText {
text: "nothing to see here move along now!"
}
}
Component {
id: currentGroupList
SimpleRow {
id: container
readonly property var calendarUserItem: dataModel.calendarUserItems[departments[currGroupIndex]][modelData] || {}
visible: container.calendarUserItem.status === "pending" ? true : false
// only pending items visible
// remaining code for simple row
}
}
}
}
пример JSON в моем dataModel.calendarUserItems
:
"groupName": [
{ "department1":
{ "1555111624727" : {
"creationDate" : 1555111624727,
"date" : "2019-03-15T12:00:00.000",
"name" : "Edward Lawrence",
"status": "pending"
},
//several of these entries within department1
},
},
{ "department2":
{ "1555111624727" : {
"creationDate" : 1555111624456,
"date" : "2019-05-1T12:00:00.000",
"name" : "Katie P",
"status": 1
},
//several of these entries within department2
},
}
//departments 3 & 4 as the same
]
Если в отделах 2 и 3 есть modelData
, но 1 и 4 нет, я хочу, чтобы вместо этого отображался текст, а ListView
очищался вместо отображения предыдущего modelData
.
Я пытался поиграть с изображением / текстом, нопроблема заключается в очистке modelData
, и я не уверен, с чего начать?
Любая помощь очень ценится!