Skip to content

Commit

Permalink
Merge pull request #19442 from patocallaghan/patoc/render-deprecation
Browse files Browse the repository at this point in the history
  • Loading branch information
rwjblue committed Mar 2, 2021
2 parents eff00a3 + 7765a67 commit 70b73fd
Show file tree
Hide file tree
Showing 6 changed files with 206 additions and 106 deletions.
Expand Up @@ -222,10 +222,13 @@ if (ENV._DEBUG_RENDER_TREE) {
}

renderTemplate(_: Controller, { showHeader }: Model): void {
this.render();
expectDeprecation(() => this.render(), /Usage of `render` is deprecated/);

if (showHeader) {
this.render('header', { outlet: 'header' });
expectDeprecation(
() => this.render('header', { outlet: 'header' }),
/Usage of `render` is deprecated/
);
} else {
expectDeprecation(
() => this.disconnectOutlet('header'),
Expand Down
Expand Up @@ -464,11 +464,13 @@ moduleFor(
'route:application',
Route.extend({
renderTemplate() {
this.render();
this.render('nav', {
into: 'application',
outlet: 'nav',
});
expectDeprecation(() => {
this.render();
this.render('nav', {
into: 'application',
outlet: 'nav',
});
}, /Usage of `render` is deprecated/);
},
})
);
Expand Down Expand Up @@ -613,7 +615,10 @@ moduleFor(
},

renderTemplate(controller, model) {
this.render({ controller: model.color, model });
expectDeprecation(
() => this.render({ controller: model.color, model }),
/Usage of `render` is deprecated/
);
},
})
);
Expand Down Expand Up @@ -659,7 +664,10 @@ moduleFor(
},

renderTemplate(controller, model) {
this.render('common', { controller: 'common', model });
expectDeprecation(
() => this.render('common', { controller: 'common', model }),
/Usage of `render` is deprecated/
);
},
})
);
Expand All @@ -672,7 +680,10 @@ moduleFor(
},

renderTemplate(controller, model) {
this.render('common', { controller: 'common', model });
expectDeprecation(
() => this.render('common', { controller: 'common', model }),
/Usage of `render` is deprecated/
);
},
})
);
Expand Down
41 changes: 36 additions & 5 deletions packages/@ember/-internals/routing/lib/system/route.ts
Expand Up @@ -20,7 +20,7 @@ import {
Object as EmberObject,
typeOf,
} from '@ember/-internals/runtime';
import { isProxy, lookupDescriptor } from '@ember/-internals/utils';
import { isProxy, lookupDescriptor, symbol } from '@ember/-internals/utils';
import Controller from '@ember/controller';
import { assert, deprecate, info, isTesting } from '@ember/debug';
import { ROUTER_EVENTS } from '@ember/deprecated-features';
Expand Down Expand Up @@ -49,6 +49,7 @@ import generateController from './generate_controller';
import EmberRouter, { QueryParam } from './router';

export const ROUTE_CONNECTIONS = new WeakMap();
const RENDER = symbol('render') as string;

export function defaultSerialize(
model: {},
Expand Down Expand Up @@ -1485,6 +1486,29 @@ class Route extends EmberObject implements IRoute {
return route && route.currentModel;
}

/**
`this[RENDER]` is used to render a template into a region of another template
(indicated by an `{{outlet}}`).
@method this[RENDER]
@param {String} name the name of the template to render
@param {Object} [options] the options
@param {String} [options.into] the template to render into,
referenced by name. Defaults to the parent template
@param {String} [options.outlet] the outlet inside `options.into` to render into.
Defaults to 'main'
@param {String|Object} [options.controller] the controller to use for this template,
referenced by name or as a controller instance. Defaults to the Route's paired controller
@param {Object} [options.model] the model object to set on `options.controller`.
Defaults to the return value of the Route's model hook
@private
*/
[RENDER](name?: string, options?: PartialRenderOptions) {
let renderOptions = buildRenderOptions(this, name, options);
ROUTE_CONNECTIONS.get(this).push(renderOptions);
once(this._router, '_setOutlets');
}

/**
A hook you can use to render the template for the current route.
Expand Down Expand Up @@ -1521,7 +1545,7 @@ class Route extends EmberObject implements IRoute {
*/
renderTemplate(_controller: any, _model: {}) {
// eslint-disable-line no-unused-vars
this.render();
this[RENDER]();
}

/**
Expand Down Expand Up @@ -1652,9 +1676,16 @@ class Route extends EmberObject implements IRoute {
@public
*/
render(name?: string, options?: PartialRenderOptions) {
let renderOptions = buildRenderOptions(this, name, options);
ROUTE_CONNECTIONS.get(this).push(renderOptions);
once(this._router, '_setOutlets');
deprecate(`Usage of \`render\` is deprecated. Route: \`${this.routeName}\``, false, {
id: 'route-render-template',
until: '4.0.0',
url: 'https://deprecations.emberjs.com/v3.x/#toc_route-render-template',
for: 'ember-source',
since: {
enabled: '3.27.0',
},
});
this[RENDER](name, options);
}

/**
Expand Down
5 changes: 4 additions & 1 deletion packages/ember/tests/routing/model_loading_test.js
Expand Up @@ -214,7 +214,10 @@ moduleFor(
Route.extend({
controllerName: 'myController',
renderTemplate() {
this.render('alternative_home');
expectDeprecation(
() => this.render('alternative_home'),
/Usage of `render` is deprecated/
);
},
})
);
Expand Down

0 comments on commit 70b73fd

Please sign in to comment.