Last active
July 17, 2017 15:00
-
-
Save cafreeman/d9bd55942c00218b14b229222a74bff7 to your computer and use it in GitHub Desktop.
Nested CPs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Ember from 'ember'; | |
const statKeys = ['a', 'b', 'c']; | |
// A computed property macro that generates a "double property X" CP | |
function makeDoubleComputed(key) { | |
return Ember.computed(key, function() { | |
const thing = Ember.get(this, `stats.${key}`); | |
console.log(this); | |
return 2 * thing; | |
}) | |
} | |
// Some basic Ember class | |
const Thing = Ember.Object.extend({ | |
stats: null | |
}); | |
// Reopen the constructor and add the `doubleStats` key, with the value set of an object of computed properties | |
Thing.reopen({ | |
doubleStats: statKeys.reduce((acc, statKey) => { | |
Ember.set(acc, statKey, makeDoubleComputed(statKey)); | |
return acc; | |
}, {}) | |
}); | |
export default Ember.Controller.extend({ | |
appName: 'Ember Twiddle', | |
init() { | |
this._super(...arguments); | |
this.set('thing', Thing.create({stats: { a: 1, b: 2, c: 3}})); | |
} | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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