Backbone Nesty

Support nested data types like collections and models within your Backbone.js models
Install
- Install:
npm install --save backbone-nesty
- Module:
require('backbone-nesty')
- Install:
npm install --save backbone-nesty
- Module:
require('backbone-nesty')
- CDN URL:
//wzrd.in/bundle/backbone-nesty@2.0.0
- Install:
ender add backbone-nesty
- Module:
require('backbone-nesty')
This package is published with the following editions:
backbone-nesty
aliases backbone-nesty/index.js
which uses Editions to automatically select the correct edition for the consumers environment
backbone-nesty/source/index.coffee
is Source + CoffeeScript + Require
backbone-nesty/esnext/index.js
is CoffeeScript Compiled + ESNext + Require
backbone-nesty/es2015/index.js
is CoffeeScript Compiled + ES2015 + Require
Older environments may need Babel's Polyfill or something similar.
Usage
Example
var Backbone = require('backbone');
var BackboneNestyModel = require('backbone-nesty').BackboneNestyModel;
var EyeModel = Backbone.Model.extend({
attributes: {
color: null,
open: false
}
});
var EyeCollection = Backbone.Collection.extend({
model: EyeModel
});
var MouthModel = Backbone.Model.extend({
attributes: {
open: false
}
});
var HeadModel = BackboneNestyModel.extend({
collections: {
eyes: EyeCollection
},
models: {
mouth: MouthModel
}
});
var myHead = new HeadModel({
mouth: {
open: true
},
eyes: [
{
id: 'left',
color: 'green',
open: true
},
{
id: 'right',
color: 'green',
open: true
}
]
});
console.log(myHead.toJSON());
console.log(myHead.get('eyes.left.open'));
myHead.set('eyes.left.open', false);
console.log(myHead.toJSON());
console.log(myHead.get('eyes.left.open'));
BackboneNestyModel API
require('backbone-nesty').BackboneNestyModel
is an extended Backbone.js Model that adds the following functionality:
- properties
collections
defaults to {}
, an object which keys are the attributes and values are the collection data type for the attribute
models
defaults to {}
, an object which keys are the attributes and values are the model data type for the attribute
embed
defaults to {}
, an object which keys are the attributes and values are boolean on whether or not we should embed the full data of this attribute when calling toJSON
on the model or just an id listing
strict
defaults to true
, a boolean for whether or not we should allow unknown attributes to be set on our model
- methods
toJSON()
will serialize the model and all nested data types as well, if the embed property for an nested data type is false, that value will be replaced with an id listing instead
get(key)
adds support for nested gets
set(attrs,opts)
adds support for nested sets and will instantiate the value according to the nested data type if applicable
History
Discover the release history by heading on over to the HISTORY.md
file.
Contribute
Discover how you can contribute by heading on over to the CONTRIBUTING.md
file.
Backers
Maintainers
These amazing people are maintaining this project:
These amazing people have contributed finances to this project:
Become a sponsor!

Contributors
These amazing people have contributed code to this project:
Discover how you can contribute by heading on over to the CONTRIBUTING.md
file.
License
Unless stated otherwise all works are:
and licensed under: