【发布时间】:2013-12-30 12:13:06
【问题描述】:
我有一个 Backbone Marionette 应用程序,其模块定义如下。当我运行这个应用程序时,控制台日志语句打印出@ 作为窗口对象。当list 方法运行时,我认为this (@) 会引用List.Controller 对象。我错过了什么?
###
The Header list controller.
###
define [
'cs!app',
'cs!./view',
'cs!modules/header/entities'
], (
App,
View
) ->
App.module 'Header.List', (List, App, Backbone, Marionette, $, _) ->
List.Controller =
list: ->
console.log(@)
headers = App.request 'header:entities'
view = new View.Headers {collection: headers}
App.headerRegion.show view
setActiveHeader: (headerUrl) ->
headers = App.request 'header:entities'
header = headers.find (header) -> (header.get 'url') == headerUrl
header.select()
headers.trigger 'reset'
App.commands.setHandler 'header:setActive', (headerUrl) ->
List.Controller.setActiveHeader headerUrl
App.Header.List.Controller
更新
这是调用列表方法的模块:
###
The Header module.
###
define [
'cs!app',
'cs!./list/controller'
], (
App,
listController
) ->
App.module 'Header', (Module, App, Backbone, Marionette, $, _) ->
Module.startWithParent = false
App.module 'Routers.Header', (ModuleRouter, App, Backbone, Marionette, $, _) ->
class ModuleRouter.Router extends Marionette.AppRouter
appRoutes: {}
executeAction = (action, args) ->
action(args)
API =
list: ->
executeAction listController.list
App.Header.on 'start', ->
API.list()
App.addInitializer ->
new ModuleRouter.Router {listController: API}
App.Header
【问题讨论】:
-
函数列表的调用在哪里?
-
我在更新中添加了调用。
标签: javascript backbone.js coffeescript marionette