问题标签 [presentation-model]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6582 浏览

c# - 最佳实践:使用 AutoMapper 或 LINQ(LINQ to Objects)在域模型和表示模型之间进行映射的优缺点

你怎么看?您如何在域和表示模型之间进行映射?

0 投票
1 回答
2353 浏览

binding - JavaFX - 关于绑定按钮的禁用状态的问题

我正在尝试创建一个维护任务列表的虚拟应用程序。

现在,我要做的就是添加到列表中。我在文本框中输入任务名称,单击添加任务按钮,并希望列表会更新为新项目,任务名称输入会被清除。如果任务名称不为空,我只希望能够添加任务。下面的代码是我的实现,但我对绑定有疑问。

我将文本框的文本变量绑定到视图模型中的字符串,并将按钮的禁用变量绑定到视图模型中的布尔值。

当任务名称更改时,我有一个触发器来更新禁用状态。当任务名称绑定发生时,布尔值会相应更新,但按钮仍显示为禁用。但是当我将鼠标悬停在按钮上时,它就会启用。我相信这是由于 JavaFX 1.3 的绑定是惰性的 - 仅在读取绑定变量时才更新它。

此外,当我添加任务时,我会清除模型中的任务名称,但文本框的文本不会改变 - 即使我使用的是bind with inverse.

有没有办法像我期望的那样通过绑定自动更新文本框的文本和按钮的禁用状态?

谢谢,

詹姆士

AddTaskViewModel.fx:

主要.fx:

0 投票
2 回答
1818 浏览

c# - MVP、WinForms - 如何避免臃肿的视图、演示者和演示模型

在 Winforms 中实现 MVP 模式时,我经常发现具有太多属性、setter 和 getter 的臃肿视图接口。一个简单的例子是一个带有 3 个按钮和 7 个文本框的视图,所有这些都具有从视图中公开的值、启用和可见属性。为此添加验证结果,您可以轻松地得到一个具有 40 多个属性的界面。使用演示模型,也会有一个具有相同数量属性的模型。

您如何轻松地同步视图和演示模型,而无需来回传递所有值的臃肿演示者逻辑?(使用 80 行演示者代码,想象一下模拟模型和视图的演示者测试看起来像..160 行代码只是为了模拟该传输。)是否有任何框架可以在不诉诸 winforms 数据绑定的情况下处理这个问题?(您可能希望使用与 winforms 视图不同的视图。根据某些人的说法,这种同步应该是演示者的工作。)您会使用 AutoMapper 吗?

也许我问错了问题,但在我看来,如果没有一些好的解决方案,MVP 很容易变得臃肿..

0 投票
2 回答
212 浏览

apache-flex - 回调模型对象

我试图弄清楚如何通过 Mate Frameworks LocalEventMap 定义对我的模型对象的回调。

该事件最初是通过视图(作为模型调度程序属性)从模型调度的。但是,当回调准备好触发时,我收到以下错误。

如果我尝试制作 method="model.rtGetHandleResult",我会得到基本相同的错误

那么,为了与演示模型保持一致......我如何让事件映射将其传递给模型以执行?

0 投票
3 回答
784 浏览

.net - 我是否正确实现了 MVP/Presentation Model UI 模式?

我正在重新设计一个 Winforms 应用程序,并希望为 UI使用Presentation Model 模式的变体。如果我做得正确,有人可以从以下解释中告诉我吗?


我决定按如下方式设置依赖项:

那是:

  • 该模型除了自己之外什么都不知道。

  • 演示模型具有对模型的引用(反之亦然)。

  • 视图具有对表示模型的引用(反之亦然)。

我正在使用 Winforms 数据绑定来保持视图和表示模型同步。

现在这一切都像一个魅力,除了当我需要处理例如单击表单的“关闭”按钮时。由于表示模型没有对视图的引用,它不能订阅视图发布的任何事件。因此,我想出了以下拐杖:

那是:

  • 用户单击“关闭”按钮。

  • 按钮的Click事件在视图中被捕获,它通过设置属性做出反应CloseRequested

  • 数据绑定将此值传输到表示模型中的相应属性。

  • 表示模型通过设置它的属性来响应这个变化IsClosed

  • 数据绑定将此值传输到视图的MustClose.

  • 视图通过关闭自身来响应这种变化。

演示模型与视图很好地分离,反之亦然,但是这只是处理单个按钮命令的大量工作。考虑到我决定的依赖关系图,有没有更简单的方法?

0 投票
1 回答
127 浏览

winforms - 直接从数据库加载演示模型

我正在开发一个 WinForms 客户端直接调用数据库的 2 层应用程序。在其中一种情况下,我需要向用户显示客户实体列表。问题是客户实体包含很多属性(有些很重),我只需要其中两个——名字和姓氏。因此,为了提高性能并使表示逻辑更清晰,我想创建某种仅具有所需属性的 CustomerSummaryViewModel 类,并使用 NHibernate 的投影功能来加载它。我在这里担心的是,在这种情况下,我的数据访问逻辑与表示相结合,对我来说,这在概念上似乎是错误的。

您认为这没问题还是有更好的解决方案?

0 投票
6 回答
22958 浏览

model-view-controller - Presenter、Presentation Model、ViewModel和Controller有什么区别?

我很清楚每种模式是如何工作的,并且知道它们之间的一些细微差别,但它们真的彼此不同吗?

在我看来,Presenter、Presentation Model、ViewModel 和 Controller 本质上是同一个概念。

为什么我不能将所有这些概念都归类为控制器?我觉得它可能会大大简化整个想法。

任何人都可以清楚地描述他们的差异吗?

我想澄清一下,我确实了解这些模式是如何工作的,并且已经在一种或另一种技术中实现了其中的大部分。我真正在寻找的是某人对这些模式之一的体验,以及为什么他们不会将他们的 ViewModel 视为控制器。

我会为此给出一些声誉积分,但我正在寻找一个非常好的答案。

0 投票
2 回答
442 浏览

apache-flex - 使用演示模型在 Flex 中添加元素

我正在重构由另一位开发人员编写的一些 Flex 代码,并且我正在实现 PresentationModel 方法,因为我喜欢将 ActionScript 与 MXML 分开。我发现的问题之一是原始 ActionScript 代码在 MXML 中添加/删除元素。

发生的是处理函数检查模型,如果值正确,则从视图中创建或删除元素。什么是让演示模型向视图广告元素的最佳方式,并且仍然保持我的目标是这种松散耦合。

我正在考虑使用表示模型分派的简单事件和视图可以列出来传递要添加的元素的详细信息。还有其他解决方案吗?

谢谢

斯蒂芬

0 投票
1 回答
1984 浏览

swing - Clojure defrecord 和私有字段

我经常使用 Martin Fowler 的演示模型模式来实现我的 Java swing GUI 。

这是一个例子:

然后可以将接口传递给负责处理视图上的所有操作的演示者类。可以将模拟版本传递给演示者进行测试,并且视图非常简单,理论上不需要进行单元测试。

我正在尝试在 Clojure 中使用以下方法做类似的事情defrecord

我可以做界面和“类”的唯一方法是使用defprotocoland defrecord。有没有更好的办法?有什么方法可以使defrecord包含组件(JButton、JLabel、JList)的“字段”私有?我不喜欢暴露实现细节。

0 投票
1 回答
294 浏览

silverlight - WCF RIA 上限为 4096 条记录

只是想知道是否有人遇到过这个问题或知道为什么会这样。

我正在做一个非常简单的 mvvm 测试应用程序。一切正常。

唯一的问题是我有一个包含 4588 条记录的数据库,当我尝试将它们全部拉出时,我的加载操作就会出错。

如果我将其缩小到 .take(4095),则可行。所以我的计算机科学 Spidy Sense 开始嗡嗡作响。我知道这个号码。然后我突然意识到 4095 (实际上是 4096 条记录,因为集合是基于 0 的)是 8^4 或换句话说 32 位。这是 RIA 的内置限制吗?32位?..或者只是一个很好的 CS 号码,用于限制通话?

因此,我决定使用自定义域服务和表示模型尝试另一种方式。

奇怪的是我能够获得所有 4588 条记录。

这也有问题,例如我只能将 12 个属性挂在我的演示模型上。一旦我添加了另一个属性,它就坏了。但是 4096 记录限制的原始问题并未出现在 PM 中。

有任何想法吗?

提前致谢!!!