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: -> @