Skip to content

Instantly share code, notes, and snippets.

@golampo
Last active August 7, 2019 16:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save golampo/1df7783c89f0c0378863245e094d8dc5 to your computer and use it in GitHub Desktop.
Save golampo/1df7783c89f0c0378863245e094d8dc5 to your computer and use it in GitHub Desktop.
Workspace routing - v1
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
import EmberRouter from '@ember/routing/router';
import config from './config/environment';
const Router = EmberRouter.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('video', { path: '/video/:videoId' });
this.route('course', { path: '/course/:courseId' }, function() {
this.route('video', { path: '/video/:videoId' });
});
this.route('workspace', { path: '/*path' });
});
export default Router;
import Ember from 'ember';
export default Ember.Route.extend({
model({ videoId }, { params }) {
const courseId = params.course.courseId;
this.transitionTo('workspace', `course/${courseId}/video/${videoId}`);
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model({ videoId }) {
this.transitionTo('workspace', `video/${videoId}`);
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model({ path }) {
const parts = path.split('/');
let videoId, courseId, resource, subResource;
if (parts.length === 2) {
[resource, videoId] = [...parts];
} else if (parts.length === 4) {
[resource, courseId, subResource, videoId] = [...parts];
}
return {
videoId,
courseId,
};
}
});
<p>Example showing different canonical links that resolve to a single route (workspace).</p>
<ul>
<li>{{#link-to "video" "123"}}/video/123{{/link-to}}</li>
<li>{{#link-to "course.video" "789" "987"}}/course/789/video/987{{/link-to}}</li>
</ul>
{{outlet}}
<p>Resolved to the workspace route</p>
<p>
<b>videoId:</b> {{model.videoId}}<br>
<b>courseId:</b> {{model.courseId}}<br>
</p>
{
"version": "0.15.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.4.3",
"ember-template-compiler": "3.4.3",
"ember-testing": "3.4.3"
},
"addons": {
"ember-data": "3.4.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment