如果没有可用的模型数据,我可以用图像替换简单行吗

Can I Replace SimpleRow with Image if no modelData avaliable

我有一个 ListView,其中当前显示的 modelData 随着按钮循环显示几个 部门 选项而变化。如果其中一个部门没有数据,我的 delegate 会继续显示之前的列表数据,直到它到达 modelData 的一个包含数据的新部分。

我想要做的是,当模型 'empty'(未定义,当它正在寻找的键尚未在我的 Firebase 数据库中创建,或者当前没有项目可见时,可能会发生这种情况), text/image 改为显示;即 "Move along now, nothing to see here".

我的模型取自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
            }
        }
    }
}

我的 dataModel.calendarUserItems 中 JSON 的一个例子是:

"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.

我试过 image/text 可见性,但问题更多在于清除 modelData,我不确定从哪里开始?

非常感谢任何帮助!

我通过使用以下作为我的代表实现了显示:

delegate: {
  if (!(departments[currGroupIndex] in dataModel.calendarUserItems) ) {
    return emptyHol;
  }
  var subgroups = Object.keys(dataModel.calendarUserItems[departments[currGroupIndex]]);
  for (var i in subgroups) {
    var subgroup = dataModel.calendarUserItems[departments[currGroupIndex]][subgroups[i]];
    modelArr.push(subgroup);
  }
  var modelObect = modelArr.find( function(obj) { return obj.status === "pending"; } );
  
  if (modelObect === undefined) {
    return emptyHol;
  }            
  return currentGroupList;
}

然后当我的 AppButton.groupCycle 被按下时,我添加了 modelArr = [] 以在每次按下时清除数组,这按预期工作。

谢谢!