尝试声明readonly属性别名时遇到了麻烦
内部var
(实际上是Date
个对象)。这是一个例子
在我的笔记本电脑上重现它:
import QtQuick 2.0
Rectangle {
width: 100
height: 62
color: time.getTime() === internal.time.getTime() ? "green" : "red"
readonly property alias time: internal.time
onTimeChanged: {
if (typeof time === "undefined") return
console.log("time:", Qt.formatDateTime(time), time.getTime())
console.assert(time.getTime() === internal.time.getTime(), "not
equal")
}
Component.onCompleted: internal.time = new Date(1403621359000)
QtObject {
id: internal
property var time: undefined
}
}
外部时间属性报告的值确实是一个小时 之前是什么让我得出结论,可能是一天节省时间 机制可能涉及。
如果我将alias
替换为var
,则值仍然符合预期。
我应该注意哪些陷阱?什么可能导致这样的 行为?期望是别名不应该做任何事情 关于别名值的转换/转换。