Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NullVoxPopuli/0b709c72e16e7e10526db9973058b41f to your computer and use it in GitHub Desktop.
Save NullVoxPopuli/0b709c72e16e7e10526db9973058b41f to your computer and use it in GitHub Desktop.
Decorator Demo
import Controller from '@ember/controller';
import EmberObject from '@ember/object';
function logged(target, key, descriptor) {
let { initializer } = descriptor;
let get = function() {
console.log(`Get ${key}`); // DOES NOT LOG!
return initializer();
};
let set = function(value) {
console.log(`Set ${key}`); // DOES NOT LOG!
return ;
};
console.log(descriptor);
let newDescriptor = {
get,
set,
configurable: false,
enumerable: false,
//writable: false,
//value: undefined,
//initializer: undefined,
};
console.log(newDescriptor);
return newDescriptor;
}
class Foo {
@logged foobar = 'FOOBAR';
}
export default class ApplicationController extends Controller {
init() {
super.init(...arguments);
let foo = new Foo();
console.log(`Result: ${foo.foobar}`);
}
}
<h1>Welcome to {{this.appName}}</h1>
<br>
<br>
{{outlet}}
<br>
<br>
{
"version": "0.17.1",
"EmberENV": {
"FEATURES": {},
"_TEMPLATE_ONLY_GLIMMER_COMPONENTS": false,
"_APPLICATION_TEMPLATE_WRAPPER": true,
"_JQUERY_INTEGRATION": true
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js",
"ember": "3.18.1",
"ember-template-compiler": "3.18.1",
"ember-testing": "3.18.1"
},
"addons": {
"@glimmer/component": "1.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment