DS.Snapshot Class addon/-private/system/snapshot.js:11
PRIVATE
Defined in: addon/-private/system/snapshot.js:11
Module: ember-data
Methods
Properties
attr
(keyName)
Object
Returns the value of an attribute.
Example
1 2 3 |
// store.push('post', { id: 1, author: 'Tomster', title: 'Ember.js rocks' }); postSnapshot.attr('author'); // => 'Tomster' postSnapshot.attr('title'); // => 'Ember.js rocks' |
Note: Values are loaded eagerly and cached when the snapshot is created.
Parameters:
- keyName String
Returns:
- Object
- The attribute value or undefined
attributes
Object
Returns all attributes and their corresponding values.
Example
1 2 |
// store.push('post', { id: 1, author: 'Tomster', title: 'Ember.js rocks' }); postSnapshot.attributes(); // => { author: 'Tomster', title: 'Ember.js rocks' } |
Returns:
- Object
- All attributes of the current snapshot
belongsTo
(keyName, options)
(DS.Snapshot|String|null|undefined)
Returns the current value of a belongsTo relationship.
belongsTo
takes an optional hash of options as a second parameter,
currently supported options are:
id
: set totrue
if you only want the ID of the related record to be returned.
Example
1 2 3 4 5 6 7 |
// store.push('post', { id: 1, title: 'Hello World' }); // store.createRecord('comment', { body: 'Lorem ipsum', post: post }); commentSnapshot.belongsTo('post'); // => DS.Snapshot commentSnapshot.belongsTo('post', { id: true }); // => '1' // store.push('comment', { id: 1, body: 'Lorem ipsum' }); commentSnapshot.belongsTo('post'); // => undefined |
Calling belongsTo
will return a new Snapshot as long as there's any known
data for the relationship available, such as an ID. If the relationship is
known but unset, belongsTo
will return null
. If the contents of the
relationship is unknown belongsTo
will return undefined
.
Note: Relationships are loaded lazily and cached upon first access.
Parameters:
- keyName String
- options [Object]
Returns:
- (DS.Snapshot|String|null|undefined)
- A snapshot or ID of a known relationship or null if the relationship is known but unset. undefined will be returned if the contents of the relationship is unknown.
changedAttributes
Object
Returns all changed attributes and their old and new values.
Example
1 2 3 |
// store.push('post', { id: 1, author: 'Tomster', title: 'Ember.js rocks' }); postModel.set('title', 'Ember.js rocks!'); postSnapshot.changedAttributes(); // => { title: ['Ember.js rocks', 'Ember.js rocks!'] } |
Returns:
- Object
- All changed attributes of the current snapshot
eachAttribute
(callback, binding)
Iterates through all the attributes of the model, calling the passed function on each attribute.
Example
1 2 3 |
snapshot.eachAttribute(function(name, meta) { // ... }); |
Parameters:
- callback Function
- the callback to execute
- binding [Object]
- the value to which the callback's `this` should be bound
eachRelationship
(callback, binding)
Iterates through all the relationships of the model, calling the passed function on each relationship.
Example
1 2 3 |
snapshot.eachRelationship(function(name, relationship) { // ... }); |
Parameters:
- callback Function
- the callback to execute
- binding [Object]
- the value to which the callback's `this` should be bound
hasMany
(keyName, options)
(Array|undefined)
Returns the current value of a hasMany relationship.
hasMany
takes an optional hash of options as a second parameter,
currently supported options are:
ids
: set totrue
if you only want the IDs of the related records to be returned.
Example
1 2 3 4 5 6 |
// store.push('post', { id: 1, title: 'Hello World', comments: [2, 3] }); postSnapshot.hasMany('comments'); // => [DS.Snapshot, DS.Snapshot] postSnapshot.hasMany('comments', { ids: true }); // => ['2', '3'] // store.push('post', { id: 1, title: 'Hello World' }); postSnapshot.hasMany('comments'); // => undefined |
Note: Relationships are loaded lazily and cached upon first access.
Parameters:
- keyName String
- options [Object]
Returns:
- (Array|undefined)
- An array of snapshots or IDs of a known relationship or an empty array if the relationship is known but unset. undefined will be returned if the contents of the relationship is unknown.
serialize
(options)
Object
Parameters:
- options Object
Returns:
- Object
- an object whose values are primitive JSON values only
adapterOptions
{Object}
A hash of adapter options
id
{String}
The id of the snapshot's underlying record
Example
1 2 |
// store.push('post', { id: 1, author: 'Tomster', title: 'Ember.js rocks' }); postSnapshot.id; // => '1' |
modelName
{String}
The name of the type of the underlying record for this snapshot, as a string.
record
{DS.Model}
The underlying record for this snapshot. Can be used to access methods and properties defined on the record.
Example
1 |
var json = snapshot.record.toJSON();
|
type
{DS.Model}
The type of the underlying record for this snapshot, as a DS.Model.