[英]How to share information across views / keep global state in TornadoFX
我是 TornadoFX(或 JavaFX)的新手,我想构建一个应用程序,例如以下模型:
也就是说,我希望能够打开一个资源文件(例如 ZIP 文件)并在 treeview 中显示其内容,右侧有一个预览窗格。
我在 Views 中构建了 UI,使其看起来像这样:
这将是我的MenuView
class 处理文件/编辑菜单:
class 菜单视图:视图(){
private val menuController: MenuController by inject()
override val root: Parent =
menubar {
menu("File") {
item("Open").action {
menuController.openFile(
chooseFile("Select file",
arrayOf(FileChooser.ExtensionFilter("File", "*.*"))
).first().path
)
}
separator()
item("Quit").action {
}
}
menu("Edit") {
item("Edit 1")
separator()
item("Edit 2")
}
}
}
但我不知道如何使我的FileChooser
的结果可用于部分 UI 的 rest。 我的直觉会告诉我创建它,以便:
MenuView - MenuViewController - FileHandler
因此FileHandler
是一个 model 层,在应用程序中全局共享。 但是我不知道如何保留这个全局 object 所以它不能被 TornadoFX DI 解决方案注入。
我在这里想念什么? 我怎样才能在全球范围内制作这个文件(我的整个应用程序都围绕它)以便能够在应用程序的所有部分使用它?
您是否尝试过使用范围? https://edvin.gitbooks.io/tornadofx-guide/part2/Scopes.html ,有一些例子可以准确地解释你在那里寻找什么。 先试一试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.