0

私は少し実験をしていて、ループを介して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()

それらをすべて「グローバルに」バインドするよりも構造化されているように見えます。これを行うには不十分な方法ですか?

4

1 に答える 1

1

クラスの背後にある考え方Coffeescriptは、クラスをグローバルに、またはモジュールで定義することです。

別のタイプのスコープ内でクラスを定義することは、ポイントを逃しているようなものです。

Coffeescriptrubyクラスは、適切と思われるようにクラスを適用できることから得られる力を維持しながら、インスタンスから分離されているものとして、クラスのより風変わりなビューを奨励します。

簡単に言うとCoffeescript、トップレベルでクラスを使用するか、モジュールからクラスをエクスポートして要求するのが最善です。

于 2012-11-22T03:00:24.630 に答える