Skip to content

Instantly share code, notes, and snippets.

@ajacksified
Created April 27, 2012 00:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ajacksified/2504668 to your computer and use it in GitHub Desktop.
Save ajacksified/2504668 to your computer and use it in GitHub Desktop.
Why Coffeescript's 'extend' is beautiful with Backbone
App.Views.About ||= {}
class App.Views.About.BaseView extends App.Views.Base.BaseView
initialize: () ->
if @model
@model.bind('reset', @render)
@render()
render: =>
if @options.render
if @model
html = @template.render({ secondaryDeals: @model.toJSON() }, {
deal_grid: HoganTemplates['shared/_deal_grid']
col_secondary: HoganTemplates['shared/_col_secondary']
district_drop_down: HoganTemplates['shared/_district_drop_down']
account_header: HoganTemplates['users/_account_header']
})
else
html = @template.render({}, {
district_drop_down: HoganTemplates['shared/_district_drop_down']
})
@$el.html(html)
@options.render = true
class App.Views.About.AboutView extends App.Views.About.BaseView
template: HoganTemplates['about/about']
class App.Views.About.FaqView extends Backbone.View
template: HoganTemplates['about/faq']
class App.Views.About.ContactUsView extends App.Views.About.BaseView
template: HoganTemplates['about/contact_us']
class App.Views.About.TermsView extends App.Views.About.BaseView
template: HoganTemplates['about/terms']
class App.Views.About.PrivacyPolicyView extends App.Views.About.BaseView
template: HoganTemplates['about/privacy_policy']
class App.Views.About.CopyrightPolicyView extends App.Views.About.BaseView
template: HoganTemplates['about/copyright_policy']
class App.Views.About.SitemapView extends App.Views.About.BaseView
template: HoganTemplates['about/sitemap']
App.Views.About ||= {}
class App.Views.About.AboutView extends Backbone.View
template: HoganTemplates['about/about']
initialize: () ->
@model.bind('reset', @render)
@render()
render: =>
if @options.render
html = @template.render({ secondaryDeals: @model.toJSON() }, {
deal_grid: HoganTemplates['shared/_deal_grid']
col_secondary: HoganTemplates['shared/_col_secondary']
district_drop_down: HoganTemplates['shared/_district_drop_down']
account_header: HoganTemplates['users/_account_header']
})
@$el.html(html)
@options.render = true
class App.Views.About.FaqView extends Backbone.View
template: HoganTemplates['about/faq']
initialize: () ->
@render()
render: =>
if @options.render
html = @template.render({}, {
district_drop_down: HoganTemplates['shared/_district_drop_down']
})
@$el.html(html)
@options.render = true
class App.Views.About.ContactUsView extends Backbone.View
template: HoganTemplates['about/contact_us']
initialize: () ->
@render()
render: =>
if @options.render
html = @template.render({}, {
district_drop_down: HoganTemplates['shared/_district_drop_down']
})
@$el.html(html)
@options.render = true
class App.Views.About.TermsView extends Backbone.View
template: HoganTemplates['about/terms']
initialize: () ->
@render()
render: =>
if @options.render
html = @template.render({}, {
district_drop_down: HoganTemplates['shared/_district_drop_down']
})
@$el.html(html)
@options.render = true
class App.Views.About.PrivacyPolicyView extends Backbone.View
template: HoganTemplates['about/privacy_policy']
initialize: () ->
@render()
render: =>
if @options.render
html = @template.render({}, {
district_drop_down: HoganTemplates['shared/_district_drop_down']
})
@$el.html(html)
@options.render = true
class App.Views.About.CopyrightPolicyView extends Backbone.View
template: HoganTemplates['about/copyright_policy']
initialize: () ->
@render()
render: =>
if @options.render
html = @template.render({}, {
district_drop_down: HoganTemplates['shared/_district_drop_down']
})
@$el.html(html)
@options.render = true
class App.Views.About.SitemapView extends Backbone.View
template: HoganTemplates['about/sitemap']
initialize: () ->
@render()
render: =>
if @options.render
html = @template.render({}, {
district_drop_down: HoganTemplates['shared/_district_drop_down']
})
@$el.html(html)
@options.render = true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment