-
Notifications
You must be signed in to change notification settings - Fork 172
Example usage
This example renders a View into a template which is injected into a layout.
These example templates are defined using a common pattern which leverages how
browsers ignore <script></script>
contents when using a custom type
attribute.
Note: This is how LayoutManager expects templates to be defined by default (using script tags).
<script id="main-layout" type="layout">
<section class="content"></section>
<!-- Login template below will be injected here -->
<aside class="secondary"></aside>
</script>
<script id="login-template" type="template">
<form class="login">
<p><label for="user">Username</label><input type="text" name="user"></p>
<p><label for="pass">Password</label><input type="text" name="pass"></p>
<p><input class="loginBtn" type="submit" value="Login"></p>
</form>
</script>
Each View can associate a template via the template
property. This name by
default is a jQuery selector, but if you have a custom configuration this could
potentially be a filename or JST function name.
Note: If you do not specify a template LayoutManager will assume the View's render method knows what it's doing and won't attempt to fetch/render anything for you.
var LoginView = Backbone.Layout.extend({
template: "#login-template"
});
If you would prefer to use Backbone.View
as your construct, you can simply
add the manage: true
assignment to your View:
var LoginView = Backbone.View.extend({
manage: true
});
Alternatively, you can globally configure this (Recommended):
Backbone.Layout.configure({
manage: true
});
Note: The manage
property has been designed to make it possible to mix
between LayoutManager specific and non-specific Views.
This code typically resides in a route callback.
var main = new Backbone.Layout({
template: "#main-layout",
// In the secondary column, put a new Login View.
views: {
".secondary": new LoginView()
}
});
To add a layout into the page, simply inject it into a container at the time of
creation. Do not call empty().append()
more than once for a layout
element, unless you detach it first. This is not recommended as it may cause a
flicker during re-rendering. It's cleaner and more efficient to only create a
layout when you need it and insert into the DOM at that time.
// Use same layout as created above.
// Attach Layout to the DOM.
main.$el.appendTo(".some-selector");
// Render the Layout.
main.render();
Getting started
Usage
- Overview
- Configuration
- Basics
- Example usage
- Nested views
- Template rendering
- LayoutManager in Node.js
API reference
Migration guides
Legacy
How to contribute