Skip to content

Instantly share code, notes, and snippets.

@lxcodes
Last active August 29, 2015 14:14
Show Gist options
  • Save lxcodes/76f8d0ba3b2cb1c983c7 to your computer and use it in GitHub Desktop.
Save lxcodes/76f8d0ba3b2cb1c983c7 to your computer and use it in GitHub Desktop.
BoundOneWay Computed Property

The Ghost folks have a great implementation:

/**
 * Defines a property similarly to `Ember.computed.oneway`,
 * save that while a `oneway` loses its binding upon being set,
 * the `BoundOneWay` will continue to listen for upstream changes.
 *
 * This is an ideal tool for working with values inside of {{input}}
 * elements.
 * @param transform: a function to transform the **upstream** value.
 */
var BoundOneWay = function (upstream, transform) {
    if (typeof transform !== 'function') {
        //default to the identity function
        transform = function (value) { return value; };
    }
    return Ember.computed(upstream, function (key, value) {
        return arguments.length > 1 ? value : transform(this.get(upstream));
    });
};

export default BoundOneWay;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment