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.Listextendscan.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.Observethat works slightly differently isattr. As expected when working with arrays, top-level keys passed intoattrare 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-lessattrreturns 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
attrto 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'sattrthat parallels the one found under attr:Listening to changes
As with
can.Observes, 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.