Skip to content

Instantly share code, notes, and snippets.

@givanse
Created March 9, 2017 23:34
Show Gist options
  • Save givanse/0a824b0799b7057fe1d2ddad6cd1b86a to your computer and use it in GitHub Desktop.
Save givanse/0a824b0799b7057fe1d2ddad6cd1b86a to your computer and use it in GitHub Desktop.
bubbling actions and closure actions
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
greet: function() {
// I'm here just to bubble up the action
console.log('child: greet');
this.sendAction('greet');
}
}
});
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
sayHello: function() {
console.log('grandchild: sayHello');
this.set('message', 'hi there!');
this.sendAction('greet');
}
}
});
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
greet: function() {
console.log('parent: greet');
this.set('message', 'I am your father.');
}
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
<h1>bubbling actions and closure actions</h1>
<br>
<br>
{{parent-component}}
{{outlet}}
<br>
<br>
<a href="http://emberjs.com/blog/2015/06/12/ember-1-13-0-released.html#toc_closure-actions">
closure actions
</a>
child: {{message}}
{{grandchild-component greet="greet"}}
{{yield}}
grandchild: {{message}}
<br>
<button {{action "sayHello"}}>
greet
</button>
{{yield}}
<h2>Bubbling</h2>
parent: {{message}}
{{child-component greet="greet"}}
<h2>Closure action</h2>
parent: {{message}}
{{child-component greet=(action "greet")}}
{
"version": "0.11.1",
"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.11.0",
"ember-data": "2.11.0",
"ember-template-compiler": "2.11.0",
"ember-testing": "2.11.0"
},
"addons": {}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment