whole_func_string: function() {
      var retVal, parsedOptions;
  
      if (this.model) {
        retVal = this.model.toJSON();
      } else if (this.collection) {
        retVal = {
          models: this.collection.toJSON(),
          meta: this.collection.meta,
          params: this.collection.params
        };
      }
  
      // Remove options that are duplicates in the templates
      parsedOptions = _.omit(this.options, ['model', 'collection', 'app']);
      return _.extend({}, retVal, parsedOptions);
    }
func_code_string: function() {
      var retVal, parsedOptions;
  
      if (this.model) {
        retVal = this.model.toJSON();
      } else if (this.collection) {
        retVal = {
          models: this.collection.toJSON(),
          meta: this.collection.meta,
          params: this.collection.params
        };
      }
  
      // Remove options that are duplicates in the templates
      parsedOptions = _.omit(this.options, ['model', 'collection', 'app']);
      return _.extend({}, retVal, parsedOptions);
    }
func_documentation_string: Get data for template.  This also acts as a view-model.
  Try to return proper data if model or collection is available.