MarionetteJS (Backbone.Marionette) Playground
A base template to use for building Backbone and Marionette applications.
http://marionettejs.com
HTML
<script src="http://underscorejs.org/underscore.js"></script>
<script src="http://backbonejs.org/backbone.js"></script>
<script src="http://marionettejs.com/downloads/backbone.marionette.js"></script>
<ul id="nav"></ul>
<div id="main"></div>
<script type="text/html" id="sample-template">
put some content <%= contentPlacement %> .
</script>
<script type="text/template" id="nav-list-item">
<a href="#"><%= title %></a>
</script>
JavaScript
// Define the app and a region to show content
// -------------------------------------------
var App = new Marionette.Application();
App.addRegions({
"mainRegion": "#main",
'navRegion': '#nav'
});
// Create a module to contain some functionality
// ---------------------------------------------
App.module("SampleModule", function (Mod, App, Backbone, Marionette, $, _) {
// Define a view to show
// ---------------------
var MainView = Marionette.ItemView.extend({
template: "#sample-template"
});
var NavItem = Marionette.ItemView.extend({
template: '#nav-list-item',
tagName: 'li',
triggers: {
"click" : "item:clicked"
}
})
var NavItems = Marionette.CollectionView.extend({
tagName: 'ul',
childView: NavItem,
onChildViewItemClicked: function() {
alert('cool');
}
});
// Define a controller to run this module
// --------------------------------------
var MainController = Marionette.Controller.extend({
initialize: function (options) {
this.region = options.region
},
show: function () {
var model = new Backbone.Model({
contentPlacement: "here"
});
var view = new MainView({
model: model
});
this.region.show(view);
}
});
var NavController = Marionette.Controller.extend({
initialize: function (options) {
this.region = options.region
},
show: function () {
var collection = new Backbone.Collection([
{
title: 'Home',
link: 'home.html'
},{
title: 'About',
link: 'about.html'
}]);
var view = new NavItems({
collection: collection
...