app/assets/javascripts/joosy/core/modules/container.js.coffee in joosy-0.1.0.RC2 vs app/assets/javascripts/joosy/core/modules/container.js.coffee in joosy-0.1.0.RC3

- old
+ new

@@ -1,47 +1,88 @@ +# +# DOM container handling, DOM elements and DOM events bindings +# +# @note Requires implementor to contain DOM node at @container propert +# +# @module +# Joosy.Modules.Container = events: false elements: false eventSplitter: /^(\S+)\s*(.*)$/ $: (selector) -> $(selector, @container) + # + # Rebinds selectors defined in 'elements' hash to object properties + # + # @example Sample elements + # elements: + # foo: '.foo' + # bar: '.bar' + # refreshElements: -> @__collectElements().each (key, value) => # TODO: Check for possible collisions? @[key] = @$(value) + # + # Fills container with given data removing all events + # + # @param [jQuery] container jQuery entity of container to update + # @param [String] data HTML to inject + # swapContainer: (container, data) -> container.unbind().off() container.html data container + # + # Gathers 'elements' from current and super classes + # __collectElements: -> elements = Object.extended @elements || {} klass = this while klass = klass.constructor.__super__ Joosy.Module.merge elements, klass.elements, false elements + # + # Gathers 'events' from current and super classes + # __collectEvents: -> events = Object.extended @events || {} klass = this while klass = klass.constructor.__super__ Joosy.Module.merge events, klass.events, false events + # + # Converts '$...' notation to selector from 'elements' + # + # @param [String] selector Selector to convert + # __extractSelector: (selector) -> if r = selector.match /\$([A-z]+)/ selector = @__collectElements()[r[1]] selector + # + # Bings events defined in 'events' to container + # + # @example Sample events + # events: + # 'click': -> # this will raise on container click + # 'click .foo': -> # this will raise on .foo click + # 'click $foo': -> #this will search for selector of foo element + # __delegateEvents: -> module = this events = @__collectEvents() events.each (key, method) =>