Skip to content

Instantly share code, notes, and snippets.

@alexdiliberto
Last active June 5, 2018 20:19
Show Gist options
  • Save alexdiliberto/647fbbe2e4f17298c657eff1473e1697 to your computer and use it in GitHub Desktop.
Save alexdiliberto/647fbbe2e4f17298c657eff1473e1697 to your computer and use it in GitHub Desktop.
Component: UI Hooks (route template `didInsertElement`)
import Ember from 'ember';
const { get } = Ember;
export default Ember.Component.extend({
'did-insert'() {},
'will-destroy'() {},
didInsertElement() {
this._super(...arguments);
get(this, 'did-insert')();
},
willDestroyElement() {
this._super(...arguments);
get(this, 'will-destroy')();
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
onInsert() {
console.log('inserting');
},
onDestroy() {
console.log('destroying');
}
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('about');
});
export default Router;
body {
margin: 12px 16px;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 12pt;
}
{{ui-hooks
did-insert=(action 'onInsert')
will-destroy=(action 'onDestroy')}}
<h3>About</h3>
<p>Hello from the about page</p>
<h1>Welcome to {{appName}}</h1>
<nav>
{{#link-to 'index'}}Home{{/link-to}} |
{{#link-to 'about'}}About{{/link-to}}
</nav>
<br>
<p>
NOTE: This is a great strategy to lazily fetch and render from an Ember Concurrency task inside a controller. See the following <a href="https://embermap.com/video/component-hooks-at-the-route-level">Embermap Video</a> for more information
</p>
{{outlet}}
<h3>Index</h3>
<p>Hello from the index page</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