我的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没有直接关系,可能是一个整体设计问题。
答案 0 :(得分:1)
一般来说,最好是触发事件而不是直接调用另一个对象的方法。
让您的应用程序更加模块化总是一件好事。如果您担心在开发的这个阶段将视图耦合到App.Util.Actions
,那么想象一下它的耦合程度是多少如果没有改变,将在稍后进行。在应用程序变得过于复杂之前,最好继续并松开耦合。让视图触发事件将允许应用程序更加分离,并允许应用程序在将来更易于维护,可扩展和组织。