 
     # Get attributes from model or collection
     getTemplateData: ->
-
       modelAttributes = @model and @model.getAttributes()
       templateData = if modelAttributes
         # Return an object which delegates to the returned attributes

    # ----------------------------

    # View container element
    # Set this property in a derived class to specify to selector
    # of the container element. The view is automatically inserted
    # into the container when it’s rendered.
    # As an alternative you might pass a `container` option to the constructor.
    containerSelector: null

    # Method which is used for adding the view to the DOM
    # Like jQuery’s `html`, `prepend`, `append`, `after`, `before` etc.

    # List of subviews
    subviews: null
    subviewsByName: null
    
    # Method wrapping to enable `afterRender` and `afterInitialize`
    # -------------------------------------------------------------
    
    # Wrap a method in order to call the corresponding
    # `after-` method automatically
    wrapMethod: (name) ->
      instance = @
      # Enclose the original function
      func = instance[name]
      # Set a flag
      instance["#{name}IsWrapped"] = true
      # Create the wrapper method
      instance[name] = ->
        # Call the original method
        func.apply instance, arguments
        # Call the corresponding `after-` method
        instance["after#{utils.upcase(name)}"] arguments...

    constructor: ->
      # Wrap `initialize` so `afterInitialize` is called afterwards
      # Only wrap if there is an overring method, otherwise we
      # can call the `after-` method directly
      unless @initialize is View::initialize
        @wrapMethod 'initialize'

      # Wrap `render` so `afterRender` is called afterwards
      unless @render is View::render
        @wrapMethod 'render'
      else
        # Otherwise just bind the `render` method
        @render = _(@render).bind this

      # Call Backbone’s constructor
