【问题标题】:Marionette - triggering actions from controllersMarionette - 从控制器触发动作
【发布时间】:2015-05-26 10:44:32
【问题描述】:

我试图了解 Marionette 中路由器和控制器背后的所有逻辑。正如您在下面看到的,每个示例都使用不同的方法来处理触发动作机制,因此很难决定我应该使用哪种方法。

  1. 示例 - link - 这个渲染来自 APpController 的视图
  2. 示例 - link - 使用 Marionette.EventAggregator
  3. 示例 - link - 使用 App 实例触发所有操作。

还值得一提的是,它们中的大多数都是 2-3 岁,因此我问自己是否在我的应用程序中使用它们。

我在Marionette.Application 实例中创建了一个基本的Marionette.AppRouterMarionette.Controller。我的AppRouter 模块中定义的所有路由都正常工作。因此,一旦“#home”路线被触发,我想更进一步并更新我的观点之一。但我无法这样做,因为在阅读了所有文档之后,我仍然不清楚如何从AppController 更新我的所有观点?

  1. 我应该使用 EventAggregator 来进行 AppControllerMarionette.Applicaiton 之间的所有通信吗?

  2. 我应该在我的AppController 中定义我的LayoutView,包括ItemViews..etc 吗?

  3. 或者我应该将我的应用程序实例传递给AppController

如果有人向我指出一个简单的最新 (AMD) 示例,我会非常高兴。

【问题讨论】:

  • 我会选择第三个例子,但我写的时候有点偏心。

标签: javascript backbone.js marionette


【解决方案1】:

最新的方法是Backbone.Radio。它将成为 Marionette 的下一个大版本中的默认事件管理器。您可以shim it 进入最新版本并立即使用。

我个人决定将 Radio 与定制路由器一起使用。关于如何组织所有内容存在相互矛盾的意见,但我将无线电和路由器都保留在 Marionette.Application 的范围之外(window.radio、window.router、window.app)。它运作良好,可能是另一个可行的选择。

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多