Skip to content

Instantly share code, notes, and snippets.

@alexlafroscia
Last active January 7, 2016 21:21
Show Gist options
  • Save alexlafroscia/044dfdd6bdae5ad8f166 to your computer and use it in GitHub Desktop.
Save alexlafroscia/044dfdd6bdae5ad8f166 to your computer and use it in GitHub Desktop.
ES6 Interoperability Testing
import Ember from 'ember';
import extendBabelClass from '../utils/extend-babel-class';
class MyController {
get appName() {
return 'Ember Twiddle';
}
someCoolFunction() {
return 'This is my cool function';
}
}
export default Ember.Controller.extend(extendBabelClass(MyController), {
init() {
this._super(this, arguments);
}
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br>
{
"version": "0.5.0",
"EmberENV": {
"FEATURES": {}
},
"options": {
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.2.0/ember.debug.js",
"ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/2.2.0/ember-data.js",
"ember-template-compiler": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.2.0/ember-template-compiler.js"
}
}
import Ember from 'ember';
export default function extendBabelClass(klass) {
const mixin = Ember.Mixin.create();
mixin.properties = mixin.properties || {};
Object.getOwnPropertyNames(klass.prototype).forEach((prop) => {
if (prop !== 'constructor') {
mixin.properties[prop] = klass.prototype[prop];
}
});
return mixin;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment