Skip to content

Instantly share code, notes, and snippets.

@GCheung55
Last active February 27, 2019 00:03
Show Gist options
  • Save GCheung55/dcaa335d09bb2fae89b337108b896829 to your computer and use it in GitHub Desktop.
Save GCheung55/dcaa335d09bb2fae89b337108b896829 to your computer and use it in GitHub Desktop.
Pass parameters to loading substate
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
import Ember from 'ember';
// Created as a target where properties can be stored.
// `queryParams` property isn't defined here because it
// won't have access to the query params until after the transition has finalized
export default Ember.Controller.extend({
});
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['bar', 'baz']
});
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('foo');
});
export default Router;
import Ember from 'ember';
import { Promise } from 'rsvp';
import { getProperties, setProperties } from '@ember/object';
export default Ember.Route.extend({
queryParams: {
bar: {
refreshModel: true
},
baz: {
refreshModel: true
}
},
model() {
return new Promise((resolve) => {
setTimeout(resolve, 500);
});
},
actions: {
loading(transition, originalRoute) {
const fooLoadingController = this.controllerFor('foo-loading');
const queryParams = transition.queryParams;
// Need to set the properties here because the controller doesn't have access direct access to the query parameters.
setProperties(fooLoadingController, queryParams);
return true;
}
}
});
<h1>Welcome to {{appName}}</h1>
{{#link-to "foo" (query-params bar=true baz=null)}}Foo Bar=true{{/link-to}}
{{#link-to "foo" (query-params bar=null baz=true)}}Foo Baz=true{{/link-to}}
<br>
<br>
{{outlet}}
<br>
<br>
Foo-loading!<br>
{{#if bar}}
Bar!
{{else if baz}}
Baz!
{{else}}
I dunno...
{{/if}}
{
"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