在木偶视图中我最好发布一个事件或调用另一个对象方法

时间:2014-04-02 17:55:34

标签: javascript coffeescript marionette

我的Marionette模块调用另一个对象方法:

@App.module 'Views', (Views, App, Backbone, Marionette, $, _) ->
  class Views.MyView extends Marionette.ItemView
    template: "my-template"

    events:
      'click .btn': '_doSomething'

    _doSomething: ->
      params =
        action: 'myAction'

      App.Util.Actions.doSomething(params)

我对这个模块对App.Util.Actions对象的依赖感到有点困扰。

为了放松这种依赖,我最好能够触发一个事件吗?

@App.module 'Views', (Views, App, Backbone, Marionette, $, _) ->
  class Views.MyView extends Marionette.ItemView
    template: "my-template"

    events:
      'click .btn': '_doSomething'

    _doSomething: ->
      params =
        action: 'myAction'

      App.vent.trigger 'DoSomething', params

然后我可以让另一个对象订阅此事件。

我知道这可能与Marionette没有直接关系,可能是一个整体设计问题。

1 个答案:

答案 0 :(得分:1)

一般来说,最好是触发事件而不是直接调用另一个对象的方法。

让您的应用程序更加模块化总是一件好事。如果您担心在开发的这个阶段将视图耦合到App.Util.Actions,那么想象一下它的耦合程度是多少如果没有改变,将在稍后进行。在应用程序变得过于复杂之前,最好继续并松开耦合。让视图触发事件将允许应用程序更加分离,并允许应用程序在将来更易于维护,可扩展和组织。