【问题标题】:TypeError: Cannot read property 'days' of undefined in qmlTypeError:无法读取 qml 中未定义的属性“天”
【发布时间】:2021-10-13 16:19:23
【问题描述】:

下面是我收到上述错误的代码的 sn-p。days 是嵌套模型:

ApplicationWindow {
id:appWindow
width: 1000
height: 600
visible:true
flags:Qt.FramelessWindowHint
//color: "transparent"

 property var monthName:0
 property string notesText: monthlistModel.get(monthofdayCalendar.currentIndex).days.get(newdayCalendar.currentIndex).hours.get(dayList.currentIndex).notes

   Settings {
       property alias notesText: appWindow.notesText
   }

下面是带有嵌套模型的listmodel

                  ListModel{
                      id:monthlistModel
                      Component.onCompleted: {
                                 let months = [
                                                {
                                                        monthName: 0,
                                                        days: createDays(31) 
                                                },
                                                {
                                                        monthName: 1,
                                                        days: createDays(29)
                                                },
                                                {
                                                        monthName:2,
                                                        days: createDays(31)
                                                },
                                                 {
                                                        monthName: 3,
                                                        days: createDays(30)
                                                },
                                                 {
                                                        monthName:4,
                                                        days: createDays(31)
                                                },
                                                 {
                                                        monthName: 5,
                                                        days: createDays(30)
                                                },
                                                 {
                                                        monthName: 6,
                                                        days: createDays(31)
                                                },
                                                 {
                                                        monthName: 7,
                                                        days: createDays(31)
                                                },
                                                 {
                                                        monthName:8,
                                                        days: createDays(30)
                                                },
                                                 {
                                                        monthName: 9,
                                                        days: createDays(31)
                                                },
                                                 {
                                                        monthName: 10,
                                                        days: createDays(30)
                                                },
                                                 {
                                                        monthName: 11,
                                                        days: createDays(31)
                                                }
                                    ]
                            append(months)
                    }
                     function createDays(dayCount) {
                            let days = []

                            for (let i = 0; i < dayCount+1; i++) {
                                    days.push({
                                                            day: i ,
                                                            hours: createHours()
                                                        }
                                                        )
                            }
                            return days
                    }

                    function createHours() {
                            let hours = []
                            for (let i = 0; i < 25; i++) {
                                    hours.push({
                                                            hour: i,
                                                            notes: ""
                                                        }
                                                        )
                            }
                            return hours
                    }
            }

申请代码在以下链接

https://gist.github.com/cgiannakidis70/a5f0f73440013424fc0dedd7e3300f75

如何解决上述错误?

提前致谢。

【问题讨论】:

    标签: qt qml typeerror listmodel


    【解决方案1】:

    总的来说,这非常需要一些重构。

    除此之外,您的 ListModel 应该包含 ListElements,而不是 javascript 对象和嵌套数组。在ListModel documentation 上可能值得一读。这是一个有点相关的question,可以提供更多帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      相关资源
      最近更新 更多