master
 1class csx.AutoView extends Backbone.View
 2  @views: {}
 3  @constructors: {}
 4
 5  @viewName: (name) ->
 6    @constructors[name] = this
 7    @::name = name
 8
 9  @install: (element) ->
10    name = $(element).data('autoview')
11    constructor = @constructors[name]
12    @create(name, element, constructor)
13
14  @create: (name, element, constructor) ->
15    if constructor == undefined
16      console.error("Could not find autoview at #{name}")
17      return
18
19    view = new constructor
20      el: element
21      $el: $(element)
22      model: @discoverModel($(element))
23    view.render()
24    key = name.replace(".", '-')
25    @views[key] ?= []
26    @views[key].push(view)
27
28  @discoverModel: (element) ->
29    modelName = element.data('automodel')
30    return if _.isUndefined(modelName)
31    new csx.Models[modelName]()
32
33  render: -> @