master
 1###
 2Example usage:
 3
 4class MyView extends Stronglifters.Autoview
 5  @viewName "my-view"
 6  template: JST['views/my_view']
 7
 8  render: () ->
 9    @$el.html(@template(message: 'hello'))
10
11<div data-autoview-name="my-view"></div>
12<div data-autoview-name="my-view" data-model="user" data-model-attributes="<%= user.to_json %>">
13###
14class Stronglifters.Autoview extends Backbone.View
15  @views: {}
16  @constructors: {}
17
18  @viewName: (name) ->
19    @constructors[name] = this
20    @::name = name
21
22  @install: (element) ->
23    $element = $(element)
24    name = $element.data("autoview-name")
25
26    view = new @constructors[name]
27      el: element
28      $el: $element
29      model: @createModel($element.data('model'), $element.data('model-attributes'))
30    view.render()
31    @views[name] ?= []
32    @views[name].push(view)
33
34  @createModel: (name, attributes) ->
35    Stronglifters.AutoModel.createModel(name, attributes)
36
37  render: -> { }