Skip to content

Instantly share code, notes, and snippets.

@vitch
Created April 15, 2020 11:32
Show Gist options
  • Save vitch/275e38b38ca77f75c9026edbe07011cc to your computer and use it in GitHub Desktop.
Save vitch/275e38b38ca77f75c9026edbe07011cc to your computer and use it in GitHub Desktop.
Proxy test
import Controller from '@ember/controller';
import EmberObject from '@ember/object';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
get bob() {
return new Proxy({ name: 'foo' }, makeHandler('bob'));
}
get bill() {
return new Proxy(EmberObject.create({ name: 'bar' }), makeHandler('bill'));
}
}
function makeHandler(name) {
return {
get(obj, prop) {
console.log(`[${name}] Getting ${typeof prop} ${prop}`);
if (prop in obj) {
return obj[prop];
}
console.log(`[${name}] custom logic necessary to get '${prop}'`);
return;
}
};
}
<h1>Proxy test</h1>
<h2>POJO (bob)</h2>
{{bob.name}}
<h2>EmberObject (bill)</h2>
{{bill.name}}
{
"version": "0.17.0",
"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.3.1/jquery.js",
"ember": "3.17.0",
"ember-template-compiler": "3.17.0",
"ember-testing": "3.17.0"
},
"addons": {
"@glimmer/component": "1.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment