Sha256: c48f5668c394c56f450ecb90d026c3a0056d282778b6b072962cf7241536d622
Contents?: true
Size: 1.89 KB
Versions: 2
Compression:
Stored size: 1.89 KB
Contents
# Two ways to createa a Select dropdown # # Start with a Backbone Collection and a specified label # # select_view = new classes.SelectView({ # collection:some_collection, # label: "name" # }) # # Start with an array # # select_view = new classes.SelectView({ # values: ["rune","steve","zach"] # }) class classes.SelectView extends Backbone.View defaults: {label: 'label'} className: "select-dropdown" initialize: (options) -> @rendered = false @label = if options.label then options.label else "label" @helper = options.helper if options.helper? # The select view needs a collection. if !@collection @collection = @collection_from_values(options.values) else if @collection.length > 0 t = @ @collection.each (model,@label) -> t.set_model_label(model) @template = JST["templates/select"] @listenTo(@collection, 'add', @add_model) @listenTo(@collection, 'remove', @render) @listenTo(@, 'rendered', @bind_select) collection_from_values: (values) -> @collection = new Backbone.Collection(_.map(values, (v) -> return {"label": v} )) add_model: (m) -> @set_model_label(m) @$el.find('select').first().append("<option>#{m.get('label')}</option>") set_model_label: (model) => model.set('label',model.get(@label)) bind_select: -> t = @ @rendered = true @select = new Select({ el: @$el.find('select')[0] className: 'select-theme-atlas' }) @select.on('change', (v) -> selected_model = t.collection.find((model) -> model.get(t.label) is v.value) t.trigger('change', selected_model) ) get_value: -> @select.value get_model: -> value = @select.value @collection.find (model) => model.get('label') is value set: (value) -> @select.change(value) render: -> @$el.html(@template({models:@collection.models, helper:@helper})) @trigger('rendered') if !@rendered @
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
atlas_assets-0.8.0 | lib/assets/javascripts/views/select.coffee |
atlas_assets-0.7.3 | lib/assets/javascripts/views/select.coffee |