vojvoda ![Build Status](https://codeship.com/projects/bf68c980-473b-0133-5250-066ef9c7f962/status?branch=master)
Backbone View extension for managing subviews.
Install
$ npm install --save vojvoda
Usage
Browser
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.3/backbone-min.js"></script>
<script src="path/to/vojvoda.js"></script>
<script>
var SomeView = Vojvoda.extend({
});
</script>
Browserify
var _ = require('lodash');
var $ = require('jquery');
var Backbone = require('Backbone');
Backbone.$ = $;
var Vojvoda = require('vojvoda')(_, Backbone);
var SomeView = Vojvoda.extend({
});
API
Vojvoda creates subViews
namespace inside of Backbone View.
Then by using only 3 methods, you can manipulate subviews without chance for creating memory leaks, ghost views, etc.
addSubView(name, class, options)
This method will create instance of class and add it to namespace.
name
(string) - key of sub view used for adding to namespaceclass
(object) - vojvoda or backbone viewoptions
any type - this will be passed to class for instantiation
Example:
var HomePageView = Vojvoda.extend({
initialize: function () {
this.addSubView('gallery', GalleryView, { model: new Backbone.Model(images) });
}
});
destroySubView(name, options)
This method will destroy subview and all nested subviews recursivly.
name
(string) - key of sub view to destroyoptions
(object) - options (defaults: { remove: true, beforeEachDestroy: _.noop }
)
Example:
var HomePageView = Vojvoda.extend({
initialize: function () {
this.addSubView('gallery', GalleryView, { model: new Backbone.Model(images) });
},
hide: function () {
this.destroySubView('gallery');
}
});
destroyAllSubViews(options, context)
This method will destroy all subviews recursivly.
options
(object) - options (defaults: { remove: true, beforeEachDestroy: _.noop }
)context
(object) - context used internally for recursion
Example:
var HomePageView = Vojvoda.extend({
initialize: function () {
this.addSubView('gallery', GalleryView, { model: new Backbone.Model(images) });
this.addSubView('breadcrumbs', BreadCrumbsView, { model: new Backbone.Model(breadcrumbs) });
},
hide: function () {
this.destroyAllSubViews();
}
});
Options for destroySubView and destroyAllSubViews
remove: true
- if you pass false, vojvoda will not execute remove methodbeforeEachDestroy: _.noop
- function will be executed before each destroySubView where argument is subview
License
MIT © Aleksandar Gosevski