2011-05-12 68 views
6

我有一個工作的CoffeeScript /骨幹成語,看起來像這樣:你如何做Coffeescript的匿名課程?

SidebarWidgets = ((() -> 
    SidebarWidgets = { } 

    class SidebarWidgetPrototype extends Backbone.View 
     initialize: (options) -> 
      @template = $(options.templateId).html() 
     render:() -> 
      $(@el).html(_.template(@template, @model.toJSON())) 
      @el 

    class SidebarWidgets.user extends SidebarWidgetPrototype 
    class SidebarWidgets.shoppingcart extends SidebarWidgetPrototype 
    class SidebarWidgets.messages extends SidebarWidgetPrototype 
    SidebarWidgets 
)()) 

class Sidebar extends Backbone.View 
    views: ['user', 'shoppingcart', 'messages'] 
    initialize: (options) -> 
     @subviews = { } 
     _.each(@views,(v) => 
      subviews[v] = news SidebarWidgets[v](
       model: cxDatasets[v] 
       id: 'sidebar-' + v 
       templateId: '#sidebar-' + v + 'template' 
      ) 
     ) 
    render:() -> 
     $(@el).html() 
     _.each(@views, (v) => 
      $(@el).append(@subview(v).render()) 
     ) 

這個成語的目的是提供骨幹的列表視圖的側邊欄視圖然後將合併,同時提供了機會(但不必要性)來覆蓋或增強小部件的一個或多個方法。

令我感到厭煩的是,對於那些需要修改的而不是的意見,它們仍然需要通過Coffeescript的類語法明確命名。

有沒有辦法用Coffeescript語法創建匿名?你能說些什麼(下面是僞代碼):

thisclass = extend BackboneView 
    initialize: (options) -> 

如果是這樣,怎麼樣?

回答

16
thisclass = class extends BackboneView 
    initialize: (options) -> 
+0

好吧,現在我覺得沒有嘗試這種做法是愚蠢的。它工作得很好,即使在下劃線「擴展」循環中也是如此。謝謝! – 2011-05-12 22:39:11

+0

@ElfSternberg你我都。 – Erik 2014-01-31 21:14:01