can.Observe.List
inherits: can.Observe
Use for observable array-like objects.
new can.Observe.List([array])
Create an observable array-like object.
Parameters
-
array
{Array}
Optionalitems to seed the List with
Returns
{can.Observe.List}
an instance of can.Observe.List
with the elements from array
can.Observe.List([name,] [staticProperties,] instanceProperties)
Creates a new extended constructor function.
This is deprecated. In CanJS 1.2, by default, calling the constructor function
without new
will create a new
instance. Use can.Observe.extend
instead of calling the constructor to extend.
Working with Lists
can.Observe.List
extendscan.Observe
, so all the ways that you're used to working with Observes also work here, including bind, unbind, and each. And just as you can directly read properties normally off of an Observe, you can use array accessors ([]) to read elements directly off of a List.The one function of
can.Observe
that works slightly differently isattr
. As expected when working with arrays, top-level keys passed intoattr
are required to be numeric. (Strings may still be used when getting or modifying deep properties). Any top-level keys that are non-numeric are ignored. In addition, as might be expected, a call to argument-lessattr
returns an array instead of an object.Just as you shouldn't set properties of an Observe directly, you shouldn't change elements of a List directly. Always use
attr
to set the elements of a List, or use push, pop, shift, unshift, or splice.Here is a tour through the forms of
can.Observe.List
'sattr
that parallels the one found under attr:Listening to changes
As with
can.Observe
s, the real power of observable arrays comes from being able to react to changes in the member elements of the array. Lists emit five types of events:This example presents a brief concrete survey of the times these events are fired:
More information about binding to these events can be found under attr.