问题标签 [presenter]
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.
unit-testing - 从单元测试的角度来看:视图应该指定演示者还是 GWT MVP 中的其他方式?
在 GWT 的教程中,Google 使用不同的方法来执行 MVP,View 指定 Presenter 或 Presenter 指定 View。第一个在使用活动和地点时使用。
这篇文章涉及到这个主题:MVP:视图是否应该实现演示者的接口,反之亦然?
但是,我想知道在对演示者和视图进行单元测试时,您认为哪种替代方案最好?还是两者都同样有效?
ruby-on-rails-3 - Presenter 模式对控制器测试的好处
我正在参与一个项目,该项目广泛使用 Presenter 模式。
我没有看到它的好处,因为 Presenter 类的所有方法都是微不足道的,就像这样:
伙计们在跟我说,这种模式使控制器的测试更加简单。我们从控制器的逻辑中抽象出来,只需要在某些返回值上测试演示者对象。
但是,这种效果可以通过检查控制器的实例变量来实现,而不需要任何表示层。
我已经准备好简化您的 Ruby on Rails 代码:Presenter 模式、单元格插件,并且仅同意第一种情况:
您的视图中有一些逻辑,它广泛使用您的模型。在其他视图中没有任何地方具有这样的逻辑。经典的建议是将此代码移动到模型中,但不久之后,您的模型就会因愚蠢的一次性辅助方法而变得臃肿。解决方案:模式演示者。
我不明白第二种情况。
您的构造函数包含大量代码,用于从数据库或其他存储中检索视图的某些值。你有很多fragment_exist?调用以确保当相应的片段已在缓存中时不会加载任何数据。由于它的大小,很难测试一个特定的动作。解决方案:模式演示者。
同样,在控制器测试中,我们只检查实例变量。他们在这里的意思
主要问题是 - Presenter 模式对控制器测试有什么好处?
ruby - Ruby:定义一个在没有任何方法的情况下调用实例时返回除自身以外的东西的类
我想知道在没有任何方法的情况下调用对象时是否有办法返回对象而不是字符串。
例如:
有没有办法定义 Foo 类,以便发生以下情况:
在我感兴趣的特定情况下,我在 Rails 视图中使用演示者。演示者设置一个主要对象,然后加载一堆相关内容。重要的部分如下所示:
如果我想返回 ExamplePresenter 使用的示例,我可以调用:
如果我也可以通过调用返回示例对象,那就太好了:
那么,有没有办法设置一个默认方法在调用对象时返回,比如 to_s 但返回一个对象而不是字符串?
ruby-on-rails - 控制器名称和演示者命名空间之间的名称冲突
我正在使用演示者模式,并且似乎遇到了不一致的类命名冲突。我有一个带有主页方法的页面控制器,我希望该方法使用 Pages::HomepagePresenter 类,但最终出现错误:
假设问题出在演示者的 Pages 控制器和 Pages 命名空间上,但在使用 Homepage 控制器和 Homepage 命名空间作为演示者时似乎没有问题。
我错过了什么吗?以下是我尝试过的应用程序行为组合:
interface - Model View Presenter - 如何在 IView 交互中实现复杂的属性
我发现很难理解如何最好地实现不是简单类型的“IView”接口属性,并且想知道其他人如何在 Model View Presenter 应用程序中处理这个问题。
我读过的文章非常好,但它们似乎都没有接近更复杂的视图,其中您具有 List<> 属性,这些属性是表示域模型中的类的接口类型,即 IPerson 或 IName 等。
我将尽可能简要地概述一个场景。
假设我需要 View 最终保留一个名称列表,每个名称由 3 个属性“Forename”、“Surname”和“Title”组成。
通常,我将有一个域模型,其中包含一个名为“Name”的类,具有 3 个属性。此域模型将实现一个名为“IName”的接口(在单独的“接口”类库中)。
现在在我的“Interaces”库中的“Views”命名空间中,我有一个名为“IViewNames”的接口。这是任何想要最终保留名称列表的视图都将实现的视图接口。
如何定义这个“IViewNames”界面让我很困惑。如果我给它一个这样的属性:
那么我实现的具体视图最终将有一个复杂的属性'Names',它将需要一个'getter',它遍历视图上的字段,以某种方式实例化'IName'的一个实例,设置它的属性,添加到一个列表中,然后返回名单。'setter' 将同样复杂,接收 'INames' 列表并在视图中设置字段并遍历它们。
我觉得这打破了 MVP 方法的主要目标之一,即无需任何具体的视图实现就能够彻底测试应用程序代码。毕竟,我可以很容易地编写一个演示者来查看“View.Names”属性并将其发送到服务层,或者在从服务接收到“名称”对象列表时设置“View.Names”属性层。我可以轻松编写很多测试来确保一切正常,除了视图中的 COMPLEX 属性之外的所有内容。
所以我的问题是,其他人如何处理不是简单类型但实际上是您的域模型类型的 IView 属性?(代表您的域模型的接口类型很好,因为我显然不希望从我的表示层引用到我的域模型层)。
我非常确定有一种已知的技术可以以一种优雅的方式实现这一点,它比我的示例方法更符合模型视图演示器的目标。
提前感谢任何帮助的人。
dependency-injection - Ninject 可以注入一个类并使其引用目标类作为反向引用吗?
我想在我的网络表单类中注入一个演示者。在这样做的同时,我希望注入的演示者包含对它被注入的视图的引用。注入一个类,并引用它被注入的类。Ninject 可以做到这一点吗?注入 webforms 类时,注入是在构造函数执行之前执行的吗?我是否应该只注入演示者并使用构造函数来传递视图?
ruby-on-rails - 如何将参数传递给Rails中的委托方法
我想要一个仪表板来显示多个模型的摘要,并且我使用 Presenter 实现了它,而没有它自己的数据。我使用一个 ActiveModel 类(没有数据表):
通过代表,我希望能够打电话Dashboard.address
回来Account.find_by_user_id(Dashboard.user_id).address
。
如果 Dashboard 是一个 ActiveRecord 类,那么我可以声明Dashboard#belongs_to :account
并且委托会自动工作(即,Account 会知道它应该从具有user_id
等于to user_id
Dashboard 实例的帐户返回地址属性)。
但是 Dashboard 不是 ActiveRecord 类,所以我不能声明belongs_to
. 我需要另一种方法来告诉 Account 查找正确的记录。
有没有办法克服这个问题?(我知道我可以伪造 Dashboard 以获得一个空表,或者我可以将 User 的实例方法重写为带参数的类方法。但这些解决方案都是 hack)。
谢谢你。
ruby-on-rails - Ruby on Rails 模式 - 装饰器与演示器
最近在 Ruby on Rails 社区中有各种关于装饰器和演示器的讨论。
两者的本质区别是什么?如果有,有什么线索可以告诉我使用哪一个而不是另一个?或者也许将两者结合使用?
ruby-on-rails - 使用具有继承资源的演示者
我在我的 Rails 应用程序中使用了相当多的优秀 Inherited Resources gem,但每当我想使用演示器时,我都会退回到手动编写控制器。
将继承资源与 Draper 或 delegate_presenter 之类的东西结合起来,是否有一个好的、干净的解决方案?
ruby-on-rails - HomePresenter 的未初始化常量
我正在尝试实现一个 HomePresenter 以在我的 Pages 控制器的 home 操作中使用:
我的演示者规格通过而没有错误,但是当我运行服务器并在 Chrome 中访问主页时,我得到了这个:
对于我的应用程序中的另外两个模型,我使用的 IndexPresenters 在命名约定和目录结构方面几乎与这个模型相同,但它们都没有给出这个错误。
在这里找到了一个类似但未答复的帖子:
有任何想法吗?