New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

backbone-model-composite

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

backbone-model-composite

A class extending Backbone.Model with support for nested models

latest
Source
npmnpm
Version
1.0.2
Version published
Weekly downloads
4
Maintainers
1
Weekly downloads
 
Created
Source

NPM version Build Status

Backbone Model Composite

This library is a small extension to the basic Backbone Model class, which supports nested models.

Install

As a Node package

npm install backbone-model-composite

With Bower

bower install backbone-model-composite

Use

Child models

Define child models using a childModels hash.

var ParentModel = Backbone.ModelComposite.extend({
  childModels: {
    firstChild: Backbone.Model,
    secondChild: OtherConstructor
  }
  
  //...
});

Attributes passed to the parent model's constructor, with keys from childModels are used to instantiate its child models.

var model = new ParentModel({
  firstChild: {
    a: 'abc',
    b: 2
  },
  secondChild: {},
  x: 3
});

model.firstChild.get('a'); // <-- 'abc'
model.secondChild.set('hello', 'world');

By default, attributes used to create child models are removed from the parent object. Pass preserveChildAttributes in the constructor's options hash to keep these attributes on the parent.

toJson()

Backbone.Model's toJSON() method is overriden to include the nested models. Pass excludeChildModels in an options hash to prevent this behavior.

model.toJSON(); // <-- {firstChild: {a: 'abc', b: 2}, secondChild: {hello: 'world'}, x: 3}    
model.toJSON({excludeChildModels: true}); // <-- {x: 3}    

Nesting

Multiple levels of nesting are supported:

var SecondaryModel = Backbone.ModelComposite.extend({
  childModels: {
    tertiary: Backbone.Model
  }
});

var TopModel = Backbone.ModelComposite.extend({
  childModels: {
    secondary: SecondaryModel 
  }
});

var model = new TopModel({first: 1});
model.secondary.set("second", 2);
model.secondary.tertiary.set("third", 3);

model.toJSON(); // <-- {first: 1, secondary: {second: 2, tertiary: {third :3}}}

Event propagation

The parent object also emits its children's events, prefixed with the key from the childModels hash.

var model = new ParentModel();
var handler = function (){};
model.on('firstChild:change', handler);
model.firstChild.set('a', 123); // handler called

Keywords

Backbone

FAQs

Package last updated on 30 Dec 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts