The can.Map.define plugin allows you to completely control the behavior
of attributes on a can.Map. To use it, you specify
an define object that is a mapping of properties
to attribute definitions. The following example
specifies a Paginate Map:
The can.Map.define plugin not only allows you to define
individual attribute behaviors on a can.Map, but you can also define default
behaviors that would apply to any unspecified attribute. This is particularly
helpful for when you need a particular behavior to apply to every attribute on
a can.Map but won't be certain of what every attribute will be.
The following example is a can.Map that is tied to can.route where only
specified attributes that are serialized will be updated in the location hash:
var State = can.Map.extend({
define: {
foo: {
serialize: true
},
'*': {
serialize: false
}
}
});
var state = new State();
// tie State map to the route
can.route.map(state);
can.route.ready();
state.attr('foo', 'bar');
state.attr('bar', 'baz');
window.location.hash; // -> #!foo=bar
Overview
This plugin is a replacement for the now deprecated attributes and setter plugins. It intends to provide a single place to define the behavior of all the properties of a can.Map.
Here is the cliffnotes version of this plugin. To define...
A custom converter method or a pre-defined standard converter called whenever a property is set - use type
That custom converter method as a constructor function - use Type
Inheritance
can.Map constructors can inherit values from the can.Map.define
plugin. If a parent can.Map constructor has a define property and a child
constructor extends the parent and also has a define property, the two will
be merged together so define properties from the parent are also available
on instances of the child. For example:
Use
The can.Map.define plugin allows you to completely control the behavior of attributes on a can.Map. To use it, you specify an define object that is a mapping of properties to attribute definitions. The following example specifies a Paginate Map:
Default behaviors
The can.Map.define plugin not only allows you to define individual attribute behaviors on a can.Map, but you can also define default behaviors that would apply to any unspecified attribute. This is particularly helpful for when you need a particular behavior to apply to every attribute on a can.Map but won't be certain of what every attribute will be.
The following example is a can.Map that is tied to can.route where only specified attributes that are serialized will be updated in the location hash:
Overview
This plugin is a replacement for the now deprecated attributes and setter plugins. It intends to provide a single place to define the behavior of all the properties of a can.Map.
Here is the cliffnotes version of this plugin. To define...
Inheritance
can.Map constructors can inherit values from the can.Map.define plugin. If a parent can.Map constructor has a
defineproperty and a child constructor extends the parent and also has adefineproperty, the two will be merged together sodefineproperties from the parent are also available on instances of the child. For example:Demo
The following shows picking cars by make / model / year: