gpt4 book ai didi

javascript - js 未定义 QML 元素

转载 作者:行者123 更新时间:2023-12-03 10:53:21 26 4
gpt4 key购买 nike

我在更改 js 文件中的元素属性时遇到问题。在我的程序中,我有具有该结构的主要元素:

import "main.js" as Main
ApplicationWindow
{
id: applicationWindow

VK {
id: vk
onReplyReady: {
if (typeof document === "string") {
var obj = JSON.parse(document)
console.log(typeof obj.response,typeof obj.count)
Main.processReply(obj.response)

} else {
Debug.log("VK UNKNOWN ERROR")
}
}
}

initialPage: Component { Auth { } }
cover: Qt.resolvedUrl("cover/CoverPage.qml")
}

在组件 Auth 中,我有该代码:

Page {
id: messangesPage

Button {
id: mycoolbutton
text: "button"
onClicked: {
vk.getMessanges("lol",0)
}
}

Component.onCompleted: {
vk.getMessanges("lol",0)
}
}

所以我的代码的想法非常简单 - 我有 vk 对象,它必须是全局的。当我调用 vk.getMessanges 时,vk 向服务器发送请求,然后发出replyReady 信号。在 onReplyReady 中,我只是解析来自服务器的回复并调用 main.js 中的函数,我想在其中执行该函数:

function processReply(reply) {
mycoolbutton.text = "mycoolbutton"
}

但是我得到了一个错误:

main.js:8: ReferenceError: mycoolbutton is not defined

我注意到,如果我从组件 Auth 调用 processReply() 函数,则一切正常,但是当我从元素 applicationWindow 调用时,我收到了该错误。我尝试在 applicationWindow 中添加属性别名 mycoolbuttonptr : mycoolbutton ,但出现另一个错误。在这种情况下我必须做什么?

最佳答案

您是否知道每次导入都会实例化一次 main.js?如果您从多个 QML 文件导入 main.js,您将获得 Main 的多个实例,因此,如果您在其中一个实例中设置对 mycoolbutton 的引用,则该引用仅在实例上设置。

如果您只想拥有一个 Main 实例,则必须在 JS 文件的开头声明它

.pragma library

关于javascript - js 未定义 QML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28352628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com