【问题标题】:How do you do anonymous classes in Coffeescript?你如何在 Coffeescript 中做匿名类?
【发布时间】:2011-08-24 08:36:45
【问题描述】:

我有一个工作的咖啡脚本/主干成语,看起来像这样:

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 语法创建一个匿名的class?能不能这样说(以下是伪代码):

thisclass = extend BackboneView
    initialize: (options) ->

如果是这样,怎么做?

【问题讨论】:

    标签: backbone.js coffeescript


    【解决方案1】:
    thisclass = class extends BackboneView
        initialize: (options) ->
    

    【讨论】:

    • 好吧,现在我因为不尝试而感到愚蠢。即使在下划线“扩展”循环中,它也能很好地工作。谢谢!
    • @ElfSternberg 你和我。
    猜你喜欢
    • 1970-01-01
    • 2012-04-15
    • 2012-01-04
    • 2011-05-09
    • 2012-02-20
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 2012-05-09
    相关资源
    最近更新 更多