Skip to content

Instantly share code, notes, and snippets.

@alexdiliberto
Last active April 17, 2017 22:48
Show Gist options
  • Save alexdiliberto/251e053b87e38e1e1a1877a38cbd006b to your computer and use it in GitHub Desktop.
Save alexdiliberto/251e053b87e38e1e1a1877a38cbd006b to your computer and use it in GitHub Desktop.
Component: Lifecycle Hooks
import Ember from 'ember';
export default Ember.Component.extend({
init(options) {
this._super(...arguments);
console.log('init', options);
},
didInsertElement() {
console.log('didInsertElement');
},
didUpdateAttrs() {
console.log('didUpdateAttrs');
},
didReceiveAttrs() {
console.log('didReceiveAttrs');
},
willUpdate(options) {
console.log('willUpdate', options);
},
didUpdate(options) {
console.log('didUpdate', options);
},
willRender() {
console.log('willRender');
},
didRender() {
console.log('didRender');
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName:'Ember Twiddle',
data: {
a: [{a: 1}, {b: 2}, {c: 3}],
b: "text"
},
actions: {
updateData() {
this.notifyPropertyChange('data');
this.set('data.b', `text ${Math.random()}`);
}
}
});
<div>
<p><b>appName</b>: {{input type="text" value=appName}}</p>
<p>Triggers: didUpdateAttrs, didReceiveAttrs, willUpdate, willRender, didUpdate, didRender</p>
</div>
<div>
<p><b>data.a.firstObject.a without DDAU</b>: {{input type="text" value=data.a.firstObject.a}}</p>
<p>Triggers: willUpdate, willRender, didUpdate, didRender</p>
</div>
<div>
<p><b>data.a.b without DDAU</b>: {{input type="text" value=data.b}}</p>
<p>Triggers: willUpdate, willRender, didUpdate, didRender</p>
</div>
<div>
<p><b>Update data.a.b using DDAU + <code>this.notifyPropertyChange()</code></b>: <button {{action 'updateData'}}>CLICK</button></p>
<p>Triggers: didUpdateAttrs, didReceiveAttrs, willUpdate, willRender, didUpdate, didRender</p>
</div>
<hr>
{{my-component name=appName data=data}}
<p><code>name</code> = {{name}}</p>
<p><code>attrs.data.a.firstObject.a</code> = {{attrs.data.a.firstObject.a}}</p>
<p><code>attrs.data.b</code> = {{attrs.data.b}}</p>
{
"version": "0.12.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.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-data": "2.12.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment