CoffeeScript - 通过循环应用类?

时间:2012-11-21 20:27:43

标签: javascript coffeescript

我已经进行了一些实验,并且遇到了一些通过循环应用CS“类”似乎有意义的情况。

例如:

if ($areas = $('.itemParent')).length >= 1
    class SomeClass
        constructor: (el) ->
            @$parent = el
            @$overflow = el.find('.overflow')
            @$items = @$overflow.find('.item')

            @max = @$items.length - 1
            @current = 0

        # Gets us to an area
        goToItem: (i) ->
            @$overflow.animate
                scrollLeft: @$items.eq(i).position().left
            , 450, 'easeInOutQuad'

        # Binds each item
        bindItems: ->
            @$parent.find('.item').bind 'click tap', (e) =>
                el = $(e.target).parents('.item')

                @$items.removeClass('active')
                el.addClass('active')

                @goToItem(el.index())
            @

    # Iterate and apply the structure to all areas
    $areas.each -> 
        area = new SomeClass($(@))
        area.bindItems()

它似乎比将它们全部“全局”绑定更有条理。这是一种不好的方法吗?

1 个答案:

答案 0 :(得分:1)

Coffeescript类背后的想法是全局或模块中定义它们。

在另一种类型的范围内定义一个类有点遗漏这一点。

Coffeescript课程鼓励更多ruby - 类别的视图与实例分开,同时保留您能够根据需要应用它们所获得的力量。

简而言之,最好在顶层使用Coffeescript类,或者从模块中导出并要求它们。