Ember.ReduceComputedProperty Class
A computed property whose dependent keys are arrays and which is updated with "one at a time" semantics.
Constructor
Ember.ReduceComputedProperty
()
Methods
cacheable
-
aFlag
Properties are cacheable by default. Computed property will automatically cache the return value of your function until one of the dependent keys changes.
Call volatile()
to set it into non-cached mode. When in this mode
the computed property will not automatically cache the return value.
However, if a property is properly observable, there is no reason to disable caching.
Parameters:
-
aFlag
Booleanoptional set to
false
to disable caching
Returns:
this
get
-
keyName
Access the value of the function backing the computed property. If this property has already been cached, return the cached result. Otherwise, call the function passing the property name as an argument.
Person = Ember.Object.extend({
fullName: function(keyName) {
// the keyName parameter is 'fullName' in this case.
return this.get('firstName') + ' ' + this.get('lastName');
}.property('firstName', 'lastName')
});
var tom = Person.create({
firstName: 'Tom',
lastName: 'Dale'
});
tom.get('fullName') // 'Tom Dale'
Parameters:
-
keyName
StringThe key being accessed.
Returns:
The return value of the function backing the CP.
meta
-
meta
In some cases, you may want to annotate computed properties with additional metadata about how they function or what values they operate on. For example, computed property functions may close over variables that are then no longer available for introspection.
You can pass a hash of these values to a computed property like this:
person: function() {
var personId = this.get('personId');
return App.Person.create({ id: personId });
}.property().meta({ type: App.Person })
The hash that you pass to the meta()
function will be saved on the
computed property descriptor under the _meta
key. Ember runtime
exposes a public API for retrieving these values from classes,
via the metaForProperty()
function.
Parameters:
-
meta
Hash
property
-
path
Sets the dependent keys on this computed property. Pass any number of arguments containing key paths that this computed property depends on.
MyApp.President = Ember.Object.extend({
fullName: computed(function() {
return this.get('firstName') + ' ' + this.get('lastName');
// Tell Ember that this computed property depends on firstName
// and lastName
}).property('firstName', 'lastName')
});
MyApp.president = MyApp.President.create({
firstName: 'Barack',
lastName: 'Obama',
});
MyApp.president.get('fullName'); // 'Barack Obama'
Parameters:
-
path
String multiplezero or more property paths
Returns:
this
readOnly
()
Ember.ComputedProperty
chainable
Call on a computed property to set it into read-only mode. When in this mode the computed property will throw an error when set.
MyApp.Person = Ember.Object.extend({
guid: function() {
return 'guid-guid-guid';
}.property().readOnly()
});
MyApp.person = MyApp.Person.create();
MyApp.person.set('guid', 'new-guid'); // will throw an exception
Returns:
this
set
-
keyName
-
newValue
-
oldValue
Set the value of a computed property. If the function that backs your computed property does not accept arguments then the default action for setting would be to define the property on the current object, and set the value of the property to the value being set.
Generally speaking if you intend for your computed property to be set your backing function should accept either two or three arguments.
Parameters:
Returns:
The return value of the function backing the CP.
volatile
()
Ember.ComputedProperty
chainable
Call on a computed property to set it into non-cached mode. When in this mode the computed property will not automatically cache the return value.
MyApp.outsideService = Ember.Object.extend({
value: function() {
return OutsideService.getValue();
}.property().volatile()
}).create();
Returns:
this