Skip to content

Instantly share code, notes, and snippets.

@onechiporenko
Last active April 19, 2016 10:16
Show Gist options
  • Save onechiporenko/54f985ac429ebc1584a7cd336790882c to your computer and use it in GitHub Desktop.
Save onechiporenko/54f985ac429ebc1584a7cd336790882c to your computer and use it in GitHub Desktop.
Ember.computed.* with braces
import Ember from 'ember';
const {and, or} = Ember.computed;
export default Ember.Controller.extend({
appName: 'Ember.computed.* with braces',
emberVersion: Ember.VERSION,
obj: {
a: true,
b: false
},
objStringify: Ember.computed('obj.{a,b}', function () {return JSON.stringify(this.get('obj'), null, 2);}),
computedOr: or('obj.a', 'obj.b'),
computedOrWithBraces: or('obj.{a,b}'),
computedAnd: and('obj.a', 'obj.b'),
computedAndWithBraces: and('obj.{a,b}'),
actions: {
toggle (field) {
this.toggleProperty(`obj.${field}`);
}
}
});
<h1>{{appName}}</h1>
<p><strong>Ember: {{emberVersion}}</strong></p>
{{outlet}}
obj:
<pre>{{objStringify}}</pre>
<button {{action "toggle" "a"}}>Toggle `a`</button>
<button {{action "toggle" "b"}}>Toggle `b`</button>
<p><code>or('obj.a', 'obj.b') = {{computedOr}}</code></p>
<p><code>or('obj.{a,b}') = {{computedOrWithBraces}}</code></p>
<p><code>and('obj.a', 'obj.b') = {{computedAnd}}</code></p>
<p><code>and('obj.{a,b}') = {{computedAndWithBraces}}</code></p>
{
"version": "0.7.2",
"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.4.4",
"ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/2.4.3/ember-data.js",
"ember-template-compiler": "2.4.4"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment