tengo un lenguaje CoffeeScript/espina dorsal de trabajo que tiene este aspecto:¿Cómo se hacen las clases anónimas en 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())
)
La intención de este idioma es el de proporcionar una lista de columna vertebral puntos de vista que la de la barra lateral será luego incorporar, al tiempo que proporciona la oportunidad (pero no la necesidad) de anular o mejorar uno o más métodos de un widget.
Lo que me molesta es que, para aquellas vistas que hacen no modificación necesidad, todavía necesitan ser nombrado explícitamente por la sintaxis de la clase CoffeeScript.
¿Hay una manera de crear una clase anónima con la sintaxis CoffeeScript? ¿Puedes decir algo como (el siguiente es un pseudocódigo):
thisclass = extend BackboneView
initialize: (options) ->
Si es así, ¿cómo?
Bien, ahora me siento tonto por no intentar eso. Funciona muy bien, incluso en un ciclo de subrayado "extender". ¡Gracias! –
@ElfSternberg tú y yo ambos. – Erik