我在JavaFx 8中开发了一个项目,在那里我可以将数据从一个选项卡发送或加载到另一个选项卡。现在我想以MVV模式开发相同的项目。 现在我为每个选项卡和主控制器创建了一个视图,viewmodel和model,它应该处理其他选项卡。
我可以在tab1和tab2中设置文本,但我不知道如何构建maincontroller model / modelview来处理从tab1到tab2的数据。如果我想将mainconcontrollerview绑定到maincontrollermodel,我不能因为fxml注释。
在maincontroller视图中包含了另外两个视图。我提供了类和fxml文档,以便更好地理解我到目前为止所做的工作以及我的问题可能存在的地方
答案 0 :(得分:1)
不应试图重新发明轮子,而应该看看实现MVVM模式的框架,并提供组件之间通信的必要手段。
答案 1 :(得分:0)
1)您的代码中存在一些关于MVVM的误解。 MVVM中的“视图”由两部分组成:FXML文件和“CodeBehind”类。 codeBehind类是具有@FXML注释的UI控件引用的类。然后,codeBehind类将UI控件连接到ViewModel的属性。因此,“viewmodel”包中的类实际上是属于“View”的codeBehind类。你的“模型”包中的类实际上是你的“ViewModels”。
2)在你的例子中,每个标签codeBehind类都有一个对主codeBehind类的引用,主codeBehind引用了每个标签codeBehind,这意味着你有一个非常紧密的耦合。对于父组件,可以知道它的子组件,但子组件不应该知道它们的使用位置和方式。
3)我是mvvmFX框架的开发人员之一。就像mipa所说的那样,这个框架为这种情况提供了一些帮助和实用工具。我认为有两种方法可以做到这一点: