backbone.includes

Simple library that helps manage sub models/collections within backbone.


License
MIT
Install
bower install backbone.includes

Documentation

Build Status

backbone.includes

Simple library that helps manage sub models/collections within backbone.

Usage

/* 
 * Static attribute modelName is used to identify the model
 * as attribute as a sub model/collection within other models
 */
var User = Backbone.Model.extend({
}, {
	modelName: 'user'
});

var Role = Backbone.Model.extend({
}, {
	modelName: 'role'
});
var RoleList = Backbone.Collection.extend({
	model: Role
});

var Organization = Backbone.Model.extend({
}, {
	modelName: 'organization'
});
var OrganizationList = Backbone.Collection.extend({
	model: Organization
});

/*
 * Create model, define expected sub models/collections that will be included.
 * Passing reference to the submodels collections always backbone.includes to choose
 * whether a model or collection should be used based on whether the attribute is a
 * collection or an object.
 */
var user = new User();
user.setIncludes(OrganizationList, RoleList);
user.set({
	'id': 1,
	'firstName': 'John',
	'lastName': 'Jackson',
	'organization': [
		{
			'id': 1,
			'name': 'Earthling Interactive',
		},
		{
			'id': 4,
			'name': 'Press Box Whatups'
		}
	],
	'role': {
		'id': 10,
		'name': 'admin'
	}
});

/*
 * returns OrganizationList collection containing the User's organizations
 * - notice that the method uses plural form since this will return a collection of
 *   organizations.
 */
user.getOrganizations();

/*
 * returns Role model containing the User's role
 * - notice that the method is not in plural form since the method will return a single model
 */
user.getRole();