A mapping of the events this array could emit to each event's unique name. Use this to refer an event name, e.g.
rtObj.on(RealTimeObject.Events.SET, function listener(e) {
// ...
})
Adds a new event listener for the specified event. The class will ignore duplicate registrations of the same listener to the same event.
The name of the event to add the listener for.
The listener callback to register.
This object, in support of a fluent API.
Given a search path, returns the RealTimeElement at that path, or null if no such element exists. Scoped to this object, so the first element in the given path should be a string (representing an existing key)
the search path for accessing a node within this object
The RealTimeElement at the given path, or null if no such element exists
Provides the events emitted by this object as an Observable stream.
An Observable stream of all events emitted by this object.
Synchronously calls the provided callback function for each key-value pair in this object. Curiously, no such method is provided in native Javascript.
rtObj.value() // {'firstName': 'Jimbo', 'lastName': 'McGee'}
rtObj.forEach((rtString, key) => {
console.log('My', key, 'is', rtString.value())
})
// My firstName is Jimbo
// My lastName is McGee
a function to be called for each key-value pair in this object
Returns the RealTimeElement at the given key. Analogous to the object accessor
syntax in javascript, e.g. users['firstName']
would be the same as rtUsers.get('firstName')
.
the key whose value is desired
Returns true if a value exists at the given key, even if the value is null
.
Analagous to the Javascript object
hasOwnProperty
method.
rtObj.value() // {'firstName': 'Jimbo', 'title': null}
rtObj.hasKey('firstName') // true
rtObj.hasKey('title') // true
rtObj.hasKey('age') // false
the key whose existence is being requested
true if a value exists
Each node within a RealTimeModel has a system-generated ID that is unique within this model's contents.
a unique (to the model) ID for this element
True if the element is currently set up to synchronize with the server.
True if the element is no longer synchronizing with the server. See the developer guide for more information.
Returns an array consisting of all this object's keys. Analogous to the Javascript Object.keys method.
rtObj.value() // {'firstName': 'Jimbo', 'lastName': 'McGee'}
rtObj.keys() // ['firstName', 'lastName']
an array with all of this object's keys
Returns the model to which this element belongs.
Removes a single event listener for a specific event.
The name of the event to remove the listener for.
The listener callback to unregister.
This object, in support of a fluent API.
Adds a new event listener for the specified event. The class will ignore duplicate registrations of the same listener to the same event.
The name of the event to add the listener for.
The listener callback to register.
This object, in support of a fluent API.
Adds a single shot event listener for the specified event. The listener will be called the first time the specified event is fired after the event registration occurs, after which the registration will be removed and no further events will be passed to the listener.
The name of the event to add the listener for.
The listener callback to register.
This object, in support of a fluent API.
Returns the parent of this element within the model.
the parent of this element, or this
if this is the root element
The Path representing this element's location in the containing model's data. For instance, with model data
{
user: {
age: 32
}
}
The RealTimeNumber representing 32
would have path ['user', 'age']
.
Creates a LocalPropertyReference bound to this object. Once it's created,
you can set
the property to which the reference can be bound.
See the developer guide for more information and examples.
a unique name for the property reference
A local property reference anchored to this object
Returns the remote ModelReference created by the given sessionId
with
the unique name key
, or undefined
if no such reference exists.
See Remote References in the developer guide.
The session ID that created the reference
the reference's unique key
Returns any remote references that match the given filter. You can provide
a single key
which could return references from multiple users, sessionId
which would return all of a particular user session's references, or both,
which is really just the same as using the reference method.
an object containing either a sessionId
, key
, or both
An array of remote ModelReferences, or an empty array if there were no matches.
This returns the PathElement representing this element's location relevant to its parent. For example, given a model with contents
{
obj: {
with: 1,
stuff: ['a', 'string']
}
}
let rtNumber = rtModel.elementAt(['obj', 'with']);
rtNumber.value() // 1
rtNumber.relativePath() // 'with'
let rtString = rtModel.elementAt(['obj', 'stuff', 0]);
rtString.value() // 'a'
rtString.relativePath() // 0
a PathElement representing this node's location relative to its parent, or null if it has no parent.
Removes the value at the given key. If the key doesn't exist, nothing happens.
rtObject.value() // {'firstName': 'Jimbo'}
rtObject.remove('lastName')
rtObject.value() // {'firstName': 'Jimbo'}
let rtStr = rtObject.remove('firstName')
rtObject.value() // {}
rtStr.value() // "Jimbo"
rtStr.isDetached() // true
On a successful remove
, an ObjectRemoveEvent will be emitted to any remote users.
The key whose value will be removed.
The RealTimeElement that was at key
, in detached mode. If no key
was
found, returns a RealTimeUndefined.
Removes all listeners for all events. This is useful for cleanup before disposing of this particular event emitter.
This object, in support of a fluent API.
A convenience function to delete this element. Throws an error if this is the root object in a model.
Removes a single event listener for a specific event.
The name of the event to remove the listener for.
The listener callback to unregister.
This object, in support of a fluent API.
Removes all listeners bound on the given event.
the name of the event to remove listeners for
This object, in support of a fluent API.
Sets the given key to be the given value. An existing value at the key will be replaced, otherwise a new key-value pair will be added.
Values should be javascript primitives supported by Convergence, NOT
RealTimeElements
.
rtObject.value() // {'firstName': 'Jimbo'}
rtObject.set('lastName', 'McGee')
rtObject.value() // {'firstName': 'Jimbo', 'lastName': 'McGee'}
On a successful set
, an ObjectSetEvent will be emitted for any remote users.
the key at which to place the value
the new value, which must be a data type supported by Convergence
a RealTimeElement wrapping the newly-set value
Returns a JSON-compatible representation of this element.
This element's type. See [[ModelElementType]] for an enumeration of types.
Returns the current underlying value of this element. Note that the return value will not be kept up to date automatically; rather, this function will need to be called each time the most up-to-date value is required.
Sets the value of this element, whose type must be the underlying type of this object.
On a successful value
call, the appropriate IValueChangedEvent will be emitted
to any remote users. This will be one of:
the new value for this object.
A distributed Object (in Javascript, a set of key-value pairs). This extends the functionality of the Javascript Object prototype methods.
See RealTimeObjectEvents for the many events that may be emitted on remote changes to this underlying data of this object.
Also see the developer guide for examples of some of the most common use cases.