Skip to content

Instantly share code, notes, and snippets.

@jurgenwerk
Created November 10, 2016 20:31
Show Gist options
  • Save jurgenwerk/adc37a51626f58b77aaf844f16642b28 to your computer and use it in GitHub Desktop.
Save jurgenwerk/adc37a51626f58b77aaf844f16642b28 to your computer and use it in GitHub Desktop.
Route action bubbling examples
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Teams'
});
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
delete(team) {
// controller and route action names must differ
this.send('deleteTeam', team);
}
}
});
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('teams', function() {
this.route('new');
this.route('show', { path: ':team_id' });
this.route('edit', { path: ':team_id/edit '});
});
});
export default Router;
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return [
{ id: 1, name: "Team 1" },
{ id: 2, name: "Team 2" }
];
}
});
import Ember from 'ember';
export default Ember.Route.extend({
actions: {
saveTeam(team) {
alert(`${team.name} saved.`);
this.transitionTo('teams.index');
},
deleteTeam(team) {
alert(`${team.name} deleted.`);
}
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return { name: '' };
}
});
{{#link-to 'teams'}}
Teams
{{/link-to}}
{{outlet}}
{{input placeholder="Name" value=team.name}}
<button {{action (action save team)}}>
save
</button>
<p>
Editing {{model.name}}
</p>
{{input placeholder="Name" value=model.name}}
<button {{action 'saveTeam' model}}>Save</button>
<p>
All teams:
</p>
{{#each model as |team|}}
{{#link-to 'teams.edit' team}}
{{team.name}}
{{/link-to}}
<button {{action 'delete' team}}>
x
</button>
<br>
{{/each}}
<p>
{{#link-to 'teams.new'}}
New team
{{/link-to}}
</p>
<p>
New team
</p>
{{team-form
team=model
save=(route-action 'saveTeam')
}}
<p>
Showing {{model.name}}
</p>
{
"version": "0.10.6",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.9.0",
"ember-data": "2.9.0",
"ember-template-compiler": "2.9.0",
"ember-testing": "2.9.0"
},
"addons": {
"ember-route-action-helper": "2.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment