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: -> { }