More info at http://www.benlesh.com
Open license.. use however. EXCEPT THIS README, IF YOU USE THIS I'LL SUE.
More info at http://www.benlesh.com
Open license.. use however. EXCEPT THIS README, IF YOU USE THIS I'LL SUE.
| var GETKEY_REGEXP = /^([A-Za-z0-9$_\.]*[A-Za-z0-9$_]+)(\.@each|\.\[\])?/; | |
| function parseArguments(args) { | |
| var handler = args[args.length - 1]; | |
| var observed = [].slice.call(args, 0, args.length - 1); | |
| var keys = observed.map(function(name) { | |
| var parts = GETKEY_REGEXP.exec(name); | |
| if(!parts) { | |
| return null; | |
| } | |
| return parts[1]; | |
| }); | |
| return { | |
| handler: handler, | |
| observed: observed, | |
| keys: keys | |
| }; | |
| } | |
| function shorthandFor(type) { | |
| return function() { | |
| var args = parseArguments(arguments); | |
| var actualHandler = function() { | |
| var self = this; | |
| return args.handler.apply(self, args.keys.map(function(key) { | |
| return self.get(key); | |
| })); | |
| }; | |
| return Function.prototype[type].apply(actualHandler, args.observed); | |
| }; | |
| } | |
| export var property = shorthandFor('property'); | |
| export var observer = shorthandFor('observes'); |
| import Ember from 'ember'; | |
| export default Ember.Object.extend({ | |
| _a: 'a', | |
| _b: 'b', | |
| _c: 'c', | |
| a: function(name, value) { | |
| if(arguments.length > 1) { | |
| this._a = value; | |
| } | |
| return this._a; | |
| }.property(), | |
| b: function(name, value) { | |
| if(arguments.length > 1) { | |
| this._b = value; | |
| } | |
| return this._b; | |
| }.property(), | |
| c: function(name, value) { | |
| if(arguments.length > 1) { | |
| this._c = value; | |
| } | |
| return this._c; | |
| }.property(), | |
| composite: function() { | |
| var a = this.get('a'); | |
| var b = this.get('b'); | |
| var c = this.get('c'); | |
| return a + b + c; | |
| }.property('a','b','c'), | |
| _didChangeAorB: function(){ | |
| var a = this.get('a'); | |
| var b = this.get('b'); | |
| console.log('a or b changed!', a, b); | |
| }.observes('a', 'b') | |
| }) |
| import Ember from 'ember'; | |
| import { observer, property } from 'computed-property-helpers'; | |
| var alias = Ember.computed.alias; | |
| export default Ember.Object.extend({ | |
| _a: 'a', | |
| _b: 'b', | |
| _c: 'c', | |
| a: alias('_a'), | |
| b: alias('_b'), | |
| c: alias('_c'), | |
| composite: property('a','b','c', function(a, b, c) { | |
| return a + b + c; | |
| }), | |
| _didChangeAorB: observer('a', 'b', function(a, b) { | |
| console.log('a or b changed!', a, b); | |
| }) | |
| }); |