code: function() {
      var params = {},
          fetchOptions,
          fetchSpec;
  
      if (this.options.fetch_params) {
        if (!_.isObject(this.options.fetch_params)) {
          throw new Error('fetch_params must be an object for lazy loaded views');
        }
  
        params = this.options.fetch_params;
      } else if (this.options.param_name) {
        params[this.options.param_name] = this.options.param_value;
      }
  
      if (this.options.fetch_options) {
        if (!_.isObject(this.options.fetch_options)) {
          throw new Error('fetch_options must be an object for lazy loaded views');
        }
  
        fetchOptions = this.options.fetch_options;
      }
  
      if (this.options.model_id != null) {
        params.id = this.options.model_id;
      }
  
      if (this.options.model_name != null) {
        fetchSpec = {
          model: {
            model: this.options.model_name,
            params: params
          }
        };
      } else if (this.options.collection_name != null) {
        fetchSpec = {
          collection: {
            collection: this.options.collection_name,
            params: params
          }
        };
      }
  
      // Allow ability to just pass the full "spec" to a lazy loaded view
      if (this.options.fetch_spec) {
        if (!_.isObject(this.options.fetch_spec)) {
          throw new Error('fetch_spec must be an object for lazy loaded views');
        }
  
        fetchSpec = this.options.fetch_spec;
      }
  
      this.setLoading(true);
  
      this._preRender();
      this.app.fetch(fetchSpec, fetchOptions, this._fetchLazyCallback.bind(this));
    }
docs: If rendered on the client missing its data,
  fetch it based on the parameters passed in.