我有一个名为SearchApp的顶级应用程序,其中有一个名为TeamApp的子应用程序。文件的结构如下:

search_app.js.coffee # The top-level application.
team_app/
  app.js.coffee
  team_list.js.coffee
  team_invite.js.coffee


我在search_app.js.coffee中初始化我的应用程序:

window.Domainer = {}

# This is the top level application.
Domainer.SearchApp = new Backbone.Marionette.Application()

# Assign a region to the Application.
Domainer.SearchApp.addRegions(stage: '#stage')


并在html视图中启动它:

<script>Domainer.SearchApp.start({});</script>


子模块TeamApp布置在几个文件中(如下所示)。问题是TeamApp模块中的某些文件似乎无法向SearchApp添加初始化程序。我可以从一个文件中的初始化console.log而不是另一个文件中的事实证明了这一点。

# team_app/app.js.coffee
Domainer.SearchApp.module "TeamApp", (TeamApp, SearchApp, Backbone, Marionette, $, _) ->

  # Initializers
  # ----------

  SearchApp.addInitializer (options) ->
    console.log "This will log when I call Domainer.SearchApp.start()"

  # In coffeescript it's important to explicitly return.
  return TeamApp

# team_app/team_list.js.coffee
Domainer.SearchApp.module "TeamApp", (TeamApp, SearchApp, Backbone, Marionette, $, _) ->

  class CompactSearcher extends Marionette.ItemView
    # ... various code relating to this view.

  class TeamList extends Marionette.CollectionView
    # various code relating to this view.

  SearchApp.addInitializer (options) ->
    console.log "This will never log for some reason."

  return TeamApp

# team_app/invite_view.js.coffee
Domainer.SearchApp.module "TeamApp", (TeamApp, SearchApp, Backbone, Marionette, $, _) ->

  class InviteView extends Marionette.ItemView
    # ... various code relating to this view.

  SearchApp.addInitializer (options) ->
    console.log "This will never log either."

  return TeamApp


无法将一个模块拆分为多个文件吗?我认为这是唯一发生的事情。还有什么可能导致该问题?

最佳答案

你问:


  无法将一个模块拆分为多个文件吗?


检查backbone-marionette source确认这就是正在发生的事情:

// Get the module name, and check if it exists on
// the current parent already
moduleName = moduleNames[i];
module = parentModule[moduleName];

if (!module){
  // This is where the module definition is used...
}

return module;


因此,如果您尝试多次定义同一模块,则仅使用第一个定义。

关于javascript - 我的一些应用程序初始化程序似乎没有触发?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10621213/

10-09 20:00
查看更多