https://github.com/bevry-archive/backbone-nesty
Support nested data types like collections and models within your Backbone.js models
https://github.com/bevry-archive/backbone-nesty
backbonejs client-side nodejs
Last synced: 12 days ago
JSON representation
Support nested data types like collections and models within your Backbone.js models
- Host: GitHub
- URL: https://github.com/bevry-archive/backbone-nesty
- Owner: bevry-archive
- License: other
- Created: 2013-04-04T07:01:11.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2023-12-11T09:42:14.000Z (over 1 year ago)
- Last Synced: 2025-04-03T01:34:17.408Z (20 days ago)
- Topics: backbonejs, client-side, nodejs
- Language: CoffeeScript
- Homepage:
- Size: 49.8 KB
- Stars: 8
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
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/[email protected]
- Install:
ender add backbone-nesty
- Module:
require('backbone-nesty')
Editions
This package is published with the following editions:
-
backbone-nesty
aliasesbackbone-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
``` javascript
// Import
var Backbone = require('backbone');
var BackboneNestyModel = require('backbone-nesty').BackboneNestyModel;
// Eye Model
var EyeModel = Backbone.Model.extend({
attributes: {
color: null,
open: false
}
});
// Eye Collection
var EyeCollection = Backbone.Collection.extend({
model: EyeModel
});
// Mouth Model
var MouthModel = Backbone.Model.extend({
attributes: {
open: false
}
});
// Head Model
var HeadModel = BackboneNestyModel.extend({
// Define our nested collections
collections: {
eyes: EyeCollection
},
// Define our nested models
models: {
mouth: MouthModel
}
});
// Instantiate our head with our nested data
var myHead = new HeadModel({
// will create a mouth model with this data
mouth: {
open: true
},
// will create an eyes collection with this data
eyes: [
// will create an eye model with this data
{
id: 'left',
color: 'green',
open: true
},
// will create an eye model with this data
{
id: 'right',
color: 'green',
open: true
}
]
});
// Check
console.log(myHead.toJSON());
console.log(myHead.get('eyes.left.open')); // true
// ^ equiv to myHeader.get('eyes').get('left').get('open')
// Nested Setter
myHead.set('eyes.left.open', false);
// ^ equiv to myHeader.get('eyes').get('right').set('open', false)
// Check
console.log(myHead.toJSON());
console.log(myHead.get('eyes.left.open')); // false
```
### BackboneNestyModel API
`require('backbone-nesty').BackboneNestyModel` is an extended [Backbone.js](http://backbonejs.org/) [Model](http://backbonejs.org/#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:
Sponsors
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:
- Copyright © Bevry Pty Ltd
and licensed under: