2014-07-21 39 views
0

任何想法爲什麼@layout = @getLayoutView()行會拋出Uncaught TypeError: object is not a function錯誤?我似乎無法弄清楚。與往常一樣,任何幫助都非常感謝!Coffeescript Uncaught TypeError:對象不是函數錯誤

list_controller.js.coffee:

@Demo.module "UsersApp.List", (List, App, Backbone, Marionette, $, _) -> 

    List.Controller = 

     listUsers: -> 
     users = App.request "user:entities" 
     @layout = @getLayoutView() 
     App.mainRegion.show @layout 

     getLayoutView: -> 
     new List.Layout 

list_view.js.coffee:

@Demo.module "UsersApp.List", (List, App, Backbone, Marionette, $, _) -> 

    List.Layout = new Marionette.LayoutView 
    template: "users/list/templates/list_layout" 

EDIT添加路由邏輯

user_app.js.coffee:

@Demo.module "UsersApp", (UsersApp, App, Backbone, Marionette, $, _) -> 

    class UsersApp.Router extends Marionette.AppRouter 
     appRoutes: 
      "users": "listUsers" 

    API = 
     listUsers: -> 
      UsersApp.List.Controller.listUsers() 

    App.addInitializer -> 
     new UsersApp.Router 
      controller: API 

app.js.coffee:

@Demo = do (Backbone, Marionette) -> 

    App = new Marionette.Application 

    App.rootRoute = "users" 

    App.addRegions 
    headerRegion: "#header-region" 
    mainRegion: "#main-region" 
    footerRegion: "#footer-region" 

    App.addInitializer -> 
    App.module("HeaderApp").start() 
    App.module("FooterApp").start() 

    App.on "start", -> 
    if Backbone.history 
     Backbone.history.start() 
     @navigate(@rootRoute, trigger: true) if @getCurrentRoute() is "" 

    App 
+0

什麼叫'listUsers',爲什麼你期望'@'是什麼特別的,當它調用該函數? –

+0

當然 - 我在上面添加了我的代碼。可能值得注意的是我嘗試刪除這個或@從佈局,但它做同樣的事情。我實際上是在backbonerails.com上關注Brian Mann的教程,後者指出它稍後在控制器中需要。 –

+0

雖然你的問題 - 當用戶導航到localhost:3000/users url時,會調用'listUsers'(或者在通過app.js.coffee中的最後一個函數訪問localhost:3000 url之後路由到那裏) –

回答

1

我猜你應該從「Marionette.LayoutView」延長List.Layout,但這裏的代碼片段創建「Marionette.LayoutView」的一個實例。該代碼

List.Layout = new Marionette.LayoutView 
    template: "users/list/templates/list_layout" 

應該已經

class List.Layout extends Marionette.LayoutView 
    template: "users/list/templates/list_layout" 
+0

這就像一個魅力! –

相關問題