Documentation / @ember-data/serializer / index / default
Defined in: packages/serializer/src/index.ts:140
⚠️ CAUTION you likely want the docs for MinimumSerializerInterface as extending this abstract class is unnecessary.
Serializer
is an abstract base class that you may override in your application to customize it for your backend. The minimum set of methods that you should implement is:
normalizeResponse()
serialize()
And you can optionally override the following methods:
normalize()
For an example implementation, see JSONSerializer, the included JSON serializer.
Serializer
Extends
EmberObject
Constructors
Constructor
new default(owner?): default;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/index.d.ts:31
Parameters
owner?
Owner
Returns
default
Inherited from
EmberObject.constructor
Properties
concatenatedProperties?
optional concatenatedProperties: string | string[];
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:655
Inherited from
EmberObject.concatenatedProperties
mergedProperties?
optional mergedProperties: unknown[];
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:656
Inherited from
EmberObject.mergedProperties
store
store: default;
Defined in: packages/serializer/src/index.ts:141
_lazyInjections()?
readonly static optional _lazyInjections: () => void;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:654
Returns
void
Inherited from
EmberObject._lazyInjections
_onLookup()?
readonly static optional _onLookup: (debugContainerKey) => void;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:653
Parameters
debugContainerKey
string
Returns
void
Inherited from
EmberObject._onLookup
[INIT_FACTORY]?
static optional [INIT_FACTORY]: null;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/mixin.d.ts:116
Inherited from
EmberObject.[INIT_FACTORY]
isClass
readonly static isClass: boolean;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:651
Inherited from
EmberObject.isClass
isMethod
readonly static isMethod: boolean;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:652
Inherited from
EmberObject.isMethod
PrototypeMixin
static PrototypeMixin: any;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:647
Inherited from
EmberObject.PrototypeMixin
superclass
static superclass: any;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:648
Inherited from
EmberObject.superclass
Accessors
_debugContainerKey
Get Signature
get _debugContainerKey(): false | `${string}:${string}`;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/index.d.ts:34
Returns
false
| `${string}:${string}`
Inherited from
EmberObject._debugContainerKey
isDestroyed
Get Signature
get isDestroyed(): boolean;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:272
Destroyed object property flag.
if this property is true
the observers and bindings were already removed by the effect of calling the destroy()
method.
Default
false
@public
Returns
boolean
Set Signature
set isDestroyed(_value): void;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:273
Parameters
_value
boolean
Returns
void
Inherited from
EmberObject.isDestroyed
isDestroying
Get Signature
get isDestroying(): boolean;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:284
Destruction scheduled flag. The destroy()
method has been called.
The object stays intact until the end of the run loop at which point the isDestroyed
flag is set.
Default
false
@public
Returns
boolean
Set Signature
set isDestroying(_value): void;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:285
Parameters
_value
boolean
Returns
void
Inherited from
EmberObject.isDestroying
Methods
addObserver()
Call Signature
addObserver<Target>(
key,
target,
method): this;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:333
Adds an observer on a property.
This is the core method used to register an observer for a property.
Once you call this method, any time the key's value is set, your observer will be notified. Note that the observers are triggered any time the value is set, regardless of whether it has actually changed. Your observer should be prepared to handle that.
There are two common invocation patterns for .addObserver()
:
- Passing two arguments:
- the name of the property to observe (as a string)
- the function to invoke (an actual function)
- Passing three arguments:
- the name of the property to observe (as a string)
- the target object (will be used to look up and invoke a function on)
- the name of the function to invoke on the target object (as a string).
import Component from '@ember/component';
export default Component.extend({
init() {
this._super(...arguments);
// the following are equivalent:
// using three arguments
this.addObserver('foo', this, 'fooDidChange');
// using two arguments
this.addObserver('foo', (...args) => {
this.fooDidChange(...args);
});
},
fooDidChange() {
// your custom logic code
}
});
Observer Methods
Observer methods have the following signature:
import Component from '@ember/component';
export default Component.extend({
init() {
this._super(...arguments);
this.addObserver('foo', this, 'fooDidChange');
},
fooDidChange(sender, key, value, rev) {
// your code
}
});
The sender
is the object that changed. The key
is the property that changes. The value
property is currently reserved and unused. The rev
is the last property revision of the object when it changed, which you can use to detect if the key value has really changed or not.
Usually you will not need the value or revision parameters at the end. In this case, it is common to write observer methods that take only a sender and key value as parameters or, if you aren't interested in any of these values, to write an observer that has no parameters at all.
Type Parameters
Target
Target
Parameters
key
keyof default
The key to observe
target
Target
The target object to invoke
method
ObserverMethod
<Target
, default
>
The method to invoke
Returns
this
Method
addObserver
Inherited from
EmberObject.addObserver
Call Signature
addObserver(key, method): this;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:338
Parameters
key
keyof default
method
ObserverMethod
<default
, default
>
Returns
this
Inherited from
EmberObject.addObserver
cacheFor()
cacheFor<K>(key): unknown;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:413
Returns the cached value of a computed property, if it exists. This allows you to inspect the value of a computed property without accidentally invoking it if it is intended to be generated lazily.
Type Parameters
K
K
extends keyof default
Parameters
key
K
Returns
unknown
The cached value of the computed property, if any
Method
cacheFor
Inherited from
EmberObject.cacheFor
decrementProperty()
decrementProperty(keyName, decrement?): number;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:387
Set the value of a property to the current value minus some amount.
player.decrementProperty('lives');
orc.decrementProperty('health', 5);
Parameters
keyName
keyof default
The name of the property to decrement
decrement?
number
The amount to decrement by. Defaults to 1
Returns
number
The new property value
Method
decrementProperty
Inherited from
EmberObject.decrementProperty
destroy()
destroy(): this;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:300
Destroys an object by setting the isDestroyed
flag and removing its metadata, which effectively destroys observers and bindings.
If you try to set a property on a destroyed object, an exception will be raised.
Note that destruction is scheduled for the end of the run loop and does not happen immediately. It will set an isDestroying flag immediately.
Returns
this
receiver
Method
destroy
Inherited from
EmberObject.destroy
get()
Call Signature
get<K>(key): default[K];
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:121
Retrieves the value of a property from the object.
This method is usually similar to using object[keyName]
or object.keyName
, however it supports both computed properties and the unknownProperty handler.
Because get
unifies the syntax for accessing all these kinds of properties, it can make many refactorings easier, such as replacing a simple property with a computed property, or vice versa.
Computed Properties
Computed properties are methods defined with the property
modifier declared at the end, such as:
import { computed } from '@ember/object';
fullName: computed('firstName', 'lastName', function() {
return this.get('firstName') + ' ' + this.get('lastName');
})
When you call get
on a computed property, the function will be called and the return value will be returned instead of the function itself.
Unknown Properties
Likewise, if you try to call get
on a property whose value is undefined
, the unknownProperty()
method will be called on the object. If this method returns any value other than undefined
, it will be returned instead. This allows you to implement "virtual" properties that are not defined upfront.
Type Parameters
K
K
extends keyof default
Parameters
key
K
Returns
default
[K
]
The property value or undefined.
Method
get
Inherited from
EmberObject.get
Call Signature
get(key): unknown;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:122
Parameters
key
string
Returns
unknown
Inherited from
EmberObject.get
getProperties()
Call Signature
getProperties<L>(list): { [Key in keyof default]: default[Key] };
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:144
To get the values of multiple properties at once, call getProperties
with a list of strings or an array:
record.getProperties('firstName', 'lastName', 'zipCode');
// { firstName: 'John', lastName: 'Doe', zipCode: '10011' }
is equivalent to:
record.getProperties(['firstName', 'lastName', 'zipCode']);
// { firstName: 'John', lastName: 'Doe', zipCode: '10011' }
Type Parameters
L
L
extends keyof default
[]
Parameters
list
L
of keys to get
Returns
{ [Key in keyof default]: default[Key] }
Method
getProperties
Inherited from
EmberObject.getProperties
Call Signature
getProperties<L>(...list): { [Key in keyof default]: default[Key] };
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:149
Type Parameters
L
L
extends keyof default
[]
Parameters
list
...L
Returns
{ [Key in keyof default]: default[Key] }
Inherited from
EmberObject.getProperties
Call Signature
getProperties<L>(list): { [Key in string]: unknown };
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:154
Type Parameters
L
L
extends string
[]
Parameters
list
L
Returns
{ [Key in string]: unknown }
Inherited from
EmberObject.getProperties
Call Signature
getProperties<L>(...list): { [Key in string]: unknown };
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:159
Type Parameters
L
L
extends string
[]
Parameters
list
...L
Returns
{ [Key in string]: unknown }
Inherited from
EmberObject.getProperties
incrementProperty()
incrementProperty(keyName, increment?): number;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:372
Set the value of a property to the current value plus some amount.
person.incrementProperty('age');
team.incrementProperty('score', 2);
Parameters
keyName
keyof default
The name of the property to increment
increment?
number
The amount to increment by. Defaults to 1
Returns
number
The new property value
Method
incrementProperty
Inherited from
EmberObject.incrementProperty
init()
init(_properties): void;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:114
An overridable method called when objects are instantiated. By default, does nothing unless it is overridden during class definition.
Example:
import EmberObject from '@ember/object';
const Person = EmberObject.extend({
init() {
alert(`Name is ${this.get('name')}`);
}
});
let steve = Person.create({
name: 'Steve'
});
// alerts 'Name is Steve'.
NOTE: If you do override init
for a framework class like Component
from @ember/component
, be sure to call this._super(...arguments)
in your init
declaration! If you don't, Ember may not have an opportunity to do important setup work, and you'll see strange behavior in your application.
Parameters
_properties
undefined
| object
Returns
void
Method
init
Inherited from
EmberObject.init
normalize()
normalize(_typeClass, hash):
| SingleResourceDocument
| EmptyResourceDocument;
Defined in: packages/serializer/src/index.ts:266
The normalize
method is used to convert a payload received from your external data source into the normalized form store.push()
expects. You should override this method, munge the hash and return the normalized payload.
Example:
Serializer.extend({
normalize(modelClass, resourceHash) {
let data = {
id: resourceHash.id,
type: modelClass.modelName,
attributes: resourceHash
};
return { data: data };
}
})
Parameters
_typeClass
hash
Record
<string
, unknown
>
Returns
| SingleResourceDocument
| EmptyResourceDocument
notifyPropertyChange()
notifyPropertyChange(keyName): this;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:249
Convenience method to call propertyWillChange
and propertyDidChange
in succession.
Notify the observer system that a property has just changed.
Sometimes you need to change a value directly or indirectly without actually calling get()
or set()
on it. In this case, you can use this method instead. Calling this method will notify all observers that the property has potentially changed value.
Parameters
keyName
string
The property key to be notified about.
Returns
this
Method
notifyPropertyChange
Inherited from
EmberObject.notifyPropertyChange
removeObserver()
Call Signature
removeObserver<Target>(
key,
target,
method): this;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:352
Remove an observer you have previously registered on this object. Pass the same key, target, and method you passed to addObserver()
and your target will no longer receive notifications.
Type Parameters
Target
Target
Parameters
key
keyof default
The key to observe
target
Target
The target object to invoke
method
ObserverMethod
<Target
, default
>
The method to invoke
Returns
this
Method
removeObserver
Inherited from
EmberObject.removeObserver
Call Signature
removeObserver(key, method): this;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:357
Parameters
key
keyof default
method
ObserverMethod
<default
, default
>
Returns
this
Inherited from
EmberObject.removeObserver
reopen()
reopen(...args): this;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:81
Parameters
args
...(Mixin
| Record
<string
, unknown
>)[]
Returns
this
Inherited from
EmberObject.reopen
set()
Call Signature
set<K, T>(key, value): T;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:208
Sets the provided key or path to the value.
record.set("key", value);
This method is generally very similar to calling object["key"] = value
or object.key = value
, except that it provides support for computed properties, the setUnknownProperty()
method and property observers.
Computed Properties
If you try to set a value on a key that has a computed property handler defined (see the get()
method for an example), then set()
will call that method, passing both the value and key instead of simply changing the value itself. This is useful for those times when you need to implement a property that is composed of one or more member properties.
Unknown Properties
If you try to set a value on a key that is undefined in the target object, then the setUnknownProperty()
handler will be called instead. This gives you an opportunity to implement complex "virtual" properties that are not predefined on the object. If setUnknownProperty()
returns undefined, then set()
will simply set the value on the object.
Property Observers
In addition to changing the property, set()
will also register a property change with the object. Unless you have placed this call inside of a beginPropertyChanges()
and endPropertyChanges(),
any "local" observers (i.e. observer methods declared on the same object), will be called immediately. Any "remote" observers (i.e. observer methods declared on another object) will be placed in a queue and called at a later time in a coalesced manner.
Type Parameters
K
K
extends keyof default
T
T
extends | undefined
| string
| boolean
| default
| unknown
[] | string
[] | Owner
| (_typeClass
, hash
) => | SingleResourceDocument
| EmptyResourceDocument
| { } | (...args
) => this
| (_properties
) => void
| () => this
| () => void
| () => string
| { <K
> (key
): default
[K
]; (key
): unknown
; } | { <L
> (list
): { [Key in keyof default]: default[Key] }
; <L
> (...list
): { [Key in keyof default]: default[Key] }
; <L
> (list
): { [Key in string]: unknown }
; <L
> (...list
): { [Key in string]: unknown }
; } | { <K
, T
> (key
, value
): T
; <T
> (key
, value
): T
; } | { <K
, P
> (hash
): P
; <T
> (hash
): T
; } | (keyName
) => this
| { <Target
> (key
, target
, method
): this
; (key
, method
): this
; } | { <Target
> (key
, target
, method
): this
; (key
, method
): this
; } | (keyName
, increment?
) => number
| (keyName
, decrement?
) => number
| (keyName
) => boolean
| <K
>(key
) => unknown
Parameters
key
K
value
T
The value to set or null
.
Returns
T
The passed value
Method
set
Inherited from
EmberObject.set
Call Signature
set<T>(key, value): T;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:209
Type Parameters
T
T
Parameters
key
string
value
T
Returns
T
Inherited from
EmberObject.set
setProperties()
Call Signature
setProperties<K, P>(hash): P;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:224
Sets a list of properties at once. These properties are set inside a single beginPropertyChanges
and endPropertyChanges
batch, so observers will be buffered.
record.setProperties({ firstName: 'Charles', lastName: 'Jolley' });
Type Parameters
K
K
extends keyof default
P
P
extends { [Key in keyof default]: default[Key] }
Parameters
hash
P
the hash of keys and values to set
Returns
P
The passed in hash
Method
setProperties
Inherited from
EmberObject.setProperties
Call Signature
setProperties<T>(hash): T;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:232
Type Parameters
T
T
extends Record
<string
, unknown
>
Parameters
hash
T
Returns
T
Inherited from
EmberObject.setProperties
toggleProperty()
toggleProperty(keyName): boolean;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/observable.d.ts:401
Set the value of a boolean property to the opposite of its current value.
starship.toggleProperty('warpDriveEngaged');
Parameters
keyName
keyof default
The name of the property to toggle
Returns
boolean
The new property value
Method
toggleProperty
Inherited from
EmberObject.toggleProperty
toString()
toString(): string;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:347
Returns a string representation which attempts to provide more information than Javascript's toString
typically does, in a generic way for all Ember objects.
import EmberObject from '@ember/object';
const Person = EmberObject.extend();
person = Person.create();
person.toString(); //=> "<Person:ember1024>"
If the object's class is not defined on an Ember namespace, it will indicate it is a subclass of the registered superclass:
const Student = Person.extend();
let student = Student.create();
student.toString(); //=> "<(subclass of Person):ember1025>"
If the method toStringExtension
is defined, its return value will be included in the output.
const Teacher = Person.extend({
toStringExtension() {
return this.get('fullName');
}
});
teacher = Teacher.create();
teacher.toString(); //=> "<Teacher:ember1026:Tom Dale>"
Returns
string
string representation
Method
toString
Inherited from
EmberObject.toString
willDestroy()
willDestroy(): void;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:307
Override to implement teardown.
Returns
void
Method
willDestroy
Inherited from
EmberObject.willDestroy
create()
Call Signature
readonly static create<C>(this): InstanceType<C>;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:487
Creates an instance of a class. Accepts either no arguments, or an object containing values to initialize the newly instantiated object with.
import EmberObject from '@ember/object';
const Person = EmberObject.extend({
helloWorld() {
alert(`Hi, my name is ${this.get('name')}`);
}
});
let tom = Person.create({
name: 'Tom Dale'
});
tom.helloWorld(); // alerts "Hi, my name is Tom Dale".
create
will call the init
function if defined during AnyObject.extend
If no arguments are passed to create
, it will not set values to the new instance during initialization:
let noName = Person.create();
noName.helloWorld(); // alerts undefined
NOTE: For performance reasons, you cannot declare methods or computed properties during create
. You should instead declare methods and computed properties when using extend
.
Type Parameters
C
C
extends typeof CoreObject
Parameters
this
C
Returns
InstanceType
<C
>
Method
create
For
@ember/object
Static
Inherited from
EmberObject.create
Call Signature
readonly static create<C, I, K, Args>(this, ...args): InstanceType<C> & MergeArray<Args>;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:488
Creates an instance of a class. Accepts either no arguments, or an object containing values to initialize the newly instantiated object with.
import EmberObject from '@ember/object';
const Person = EmberObject.extend({
helloWorld() {
alert(`Hi, my name is ${this.get('name')}`);
}
});
let tom = Person.create({
name: 'Tom Dale'
});
tom.helloWorld(); // alerts "Hi, my name is Tom Dale".
create
will call the init
function if defined during AnyObject.extend
If no arguments are passed to create
, it will not set values to the new instance during initialization:
let noName = Person.create();
noName.helloWorld(); // alerts undefined
NOTE: For performance reasons, you cannot declare methods or computed properties during create
. You should instead declare methods and computed properties when using extend
.
Type Parameters
C
C
extends typeof CoreObject
I
I
extends CoreObject
K
K
extends string
| number
| symbol
Args
Args
extends Partial
<{ [Key in string | number | symbol]: I[Key] }>[]
Parameters
this
C
args
...Args
Returns
InstanceType
<C
> & MergeArray
<Args
>
Method
create
For
@ember/object
Static
Inherited from
EmberObject.create
detectInstance()
readonly static detectInstance(obj): boolean;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:600
Parameters
obj
unknown
Returns
boolean
Inherited from
EmberObject.detectInstance
extend()
readonly static extend<Statics, Instance, M>(this, ...mixins?): Readonly<Statics> & EmberClassConstructor<Instance> & MergeArray<M>;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:442
Creates a new subclass.
import EmberObject from '@ember/object';
const Person = EmberObject.extend({
say(thing) {
alert(thing);
}
});
This defines a new subclass of EmberObject: Person
. It contains one method: say()
.
You can also create a subclass from any existing class by calling its extend()
method. For example, you might want to create a subclass of Ember's built-in Component
class:
import Component from '@ember/component';
const PersonComponent = Component.extend({
tagName: 'li',
classNameBindings: ['isAdministrator']
});
When defining a subclass, you can override methods but still access the implementation of your parent class by calling the special _super()
method:
import EmberObject from '@ember/object';
const Person = EmberObject.extend({
say(thing) {
let name = this.get('name');
alert(`${name} says: ${thing}`);
}
});
const Soldier = Person.extend({
say(thing) {
this._super(`${thing}, sir!`);
},
march(numberOfHours) {
alert(`${this.get('name')} marches for ${numberOfHours} hours.`);
}
});
let yehuda = Soldier.create({
name: 'Yehuda Katz'
});
yehuda.say('Yes'); // alerts "Yehuda Katz says: Yes, sir!"
The create()
on line #17 creates an instance of the Soldier
class. The extend()
on line #8 creates a subclass of Person
. Any instance of the Person
class will not have the march()
method.
You can also pass Mixin
classes to add additional properties to the subclass.
import EmberObject from '@ember/object';
import Mixin from '@ember/object/mixin';
const Person = EmberObject.extend({
say(thing) {
alert(`${this.get('name')} says: ${thing}`);
}
});
const SingingMixin = Mixin.create({
sing(thing) {
alert(`${this.get('name')} sings: la la la ${thing}`);
}
});
const BroadwayStar = Person.extend(SingingMixin, {
dance() {
alert(`${this.get('name')} dances: tap tap tap tap `);
}
});
The BroadwayStar
class contains three methods: say()
, sing()
, and dance()
.
Type Parameters
Statics
Statics
Instance
Instance
M
M
extends unknown
[]
Parameters
this
Statics
& EmberClassConstructor
<Instance
>
mixins?
...M
One or more Mixin classes
Returns
Readonly
<Statics
> & EmberClassConstructor
<Instance
> & MergeArray
<M
>
Method
extend
Static
For
@ember/object
Inherited from
EmberObject.extend
proto()
readonly static proto(): CoreObject;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:649
Returns
CoreObject
Inherited from
EmberObject.proto
reopenClass()
readonly static reopenClass<C>(this, ...mixins): C;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:595
Augments a constructor's own properties and functions:
import EmberObject from '@ember/object';
const MyObject = EmberObject.extend({
name: 'an object'
});
MyObject.reopenClass({
canBuild: false
});
MyObject.canBuild; // false
o = MyObject.create();
In other words, this creates static properties and functions for the class. These are only available on the class and not on any instance of that class.
import EmberObject from '@ember/object';
const Person = EmberObject.extend({
name: '',
sayHello() {
alert(`Hello. My name is ${this.get('name')}`);
}
});
Person.reopenClass({
species: 'Homo sapiens',
createPerson(name) {
return Person.create({ name });
}
});
let tom = Person.create({
name: 'Tom Dale'
});
let yehuda = Person.createPerson('Yehuda Katz');
tom.sayHello(); // "Hello. My name is Tom Dale"
yehuda.sayHello(); // "Hello. My name is Yehuda Katz"
alert(Person.species); // "Homo sapiens"
Note that species
and createPerson
are not valid on the tom
and yehuda
variables. They are only valid on Person
.
To add functions and properties to instances of a constructor by extending the constructor's prototype see reopen
Type Parameters
C
C
extends typeof CoreObject
Parameters
this
C
mixins
...(Mixin
| Record
<string
, unknown
>)[]
Returns
C
Method
reopenClass
For
@ember/object
Static
Inherited from
EmberObject.reopenClass
toString()
static toString(): string;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:650
Returns
string
Inherited from
EmberObject.toString
willReopen()
readonly static willReopen(): void;
Defined in: node_modules/.pnpm/ember-s_b51cd27d01243d453ba52dedc3d113b0/node_modules/ember-source/types/stable/@ember/object/core.d.ts:533
Returns
void
Inherited from
EmberObject.willReopen