Skip to content

Instantly share code, notes, and snippets.

@abuiles
Last active August 29, 2015 14:21
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 abuiles/7c1216a0f9a65e0aa7a7 to your computer and use it in GitHub Desktop.
Save abuiles/7c1216a0f9a65e0aa7a7 to your computer and use it in GitHub Desktop.
New Computed Properties - 101

What if my set doesn't return a value?

import Ember from 'ember';

export default Ember.Controller.extend({
  foo: 124,
  fooComputed: Ember.computed({
    get() {
      return this.get('foo');
    },
    set() {
      // return this.set('foo', this.get('foo') + 1);
    }
  })
});
$E.get("fooComputed")
124
$E.set("fooComputed")
Class {currentRouteName: "index", __ember1431719466492: "ember510", __nextSuper: undefined, __ember_meta__: Object}
$E.set("fooComputed")
Class {currentRouteName: "index", __ember1431719466492: "ember510", __nextSuper: undefined, __ember_meta__: Object}
$E.get("fooComputed")
undefined

What if set is not defined? (it will go bananas)

import Ember from 'ember';

export default Ember.Controller.extend({
  foo: 124,
  fooComputed: Ember.computed({
    get() {
      return this.get('foo');
    }
  })
});
124
$E.get("fooComputed")
124
$E.set("fooComputed")
Class {currentRouteName: "index", fooComputed: undefined, __ember1431719553531: "ember495", __nextSuper: undefined, __ember_meta__: Object}
$E.set("fooComputed")
Class {currentRouteName: "index", fooComputed: undefined, __ember1431719553531: "ember495", __nextSuper: undefined, __ember_meta__: Object}
$E.set("fooComputed")
Class {currentRouteName: "index", fooComputed: undefined, __ember1431719553531: "ember495", __nextSuper: undefined, __ember_meta__: Object}
$E.get("fooComputed")
undefined

What if I put a set but not a get?

import Ember from 'ember';

export default Ember.Controller.extend({
  foo: '124',
  fooComputed: Ember.computed('foo', {
    set() {
      return this.set(this.get('foo') + 1);
    }
  })
});

Then

$E.get("fooComputed")
ember.debug.js:12484 Uncaught TypeError: Cannot read property 'call' of undefined
    at Descriptor.ComputedPropertyPrototype.get (http://localhost:4200/assets/vendor.js:23038:25)
    at Object.get (http://localhost:4200/assets/vendor.js:27612:19)
    at exports.default.mixin.Mixin.create.get (http://localhost:4200/assets/vendor.js:41210:27)
    at <anonymous>:2:4
    at Object.InjectedScript._evaluateOn (<anonymous>:905:140)
    at Object.InjectedScript._evaluateAndWrap (<anonymous>:838:34)
    at Object.InjectedScript.evaluate (<anonymous>:694:21)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment