Signal Methods
TeamPlay signals come with a set of methods for interacting with the data they represent. These methods are available on all signals, whether they're created using $(), accessed through the root signal $, or returned by sub() or useSub().
get()
Retrieves the current value of the signal.
set(value)
Updates the value of the signal.
Note: set() is asynchronous and returns a Promise.
del()
Deletes the value of the signal or removes an item from an array.
Note: del() is asynchronous and returns a Promise.
push(value)
Adds a value to the end of an array signal.
unshift(value)
Adds a value to the start of an array signal.
pop()
Removes and returns the last item from an array signal.
shift()
Removes and returns the first item from an array signal.
insert(index, values)
Inserts one or more values into an array signal at the specified index.
remove(index, howMany)
Removes one or more values from an array signal and returns the removed items.
move(from, to, howMany)
Moves one or more values within an array signal and returns the moved items.
increment(value)
Increments a numeric signal by the specified value (or by 1 if no value is provided).
stringInsert(index, text)
Inserts text into a string value at the specified index.
stringRemove(index, howMany)
Removes a substring from a string value.
add(value)
Adds a new item to a collection signal, automatically generating a unique ID.
add() accepts either id or _id as a provided document ID.
If both are provided, they must be equal, otherwise add() throws.
getId()
Returns the id for the current signal.
getIds()
Returns document ids for query or aggregation signals.
getCollection()
Returns the collection name for the signal.
parent(levels = 1)
Returns the parent signal. If levels is greater than the path depth, returns the root signal.
leaf()
Returns the last path segment as a string.
assign(object)
Assigns multiple properties to a signal at once. This method iterates through the object's own properties and sets or deletes them on the signal.
Behavior:
- For non-null/undefined values: calls
.set(value)on the child signal (adds property if it doesn't exist) - For null/undefined values: calls
.del()on the child signal - Only assigns own properties (not inherited ones)
- Returns a Promise that resolves when all operations complete
Notes
- All methods that modify data (
set(),del(),push(),pop(),increment(),add(),assign()) are asynchronous and return Promises. This ensures data consistency with the server. - The
get()method is synchronous and returns the current local value of the signal. - These methods can be chained on nested signals, e.g.,
$.users[userId].name.set('New Name'). - For public documents, the
_idfield is present inget()results and matches the document id. Attempts to change_idare ignored.