[Pkg-javascript-commits] [backbone] 52/101: A real start on the documentation ... intro is done-ish.

Jonas Smedegaard js at moszumanska.debian.org
Sat May 3 16:58:28 UTC 2014


This is an automated email from the git hooks/post-receive script.

js pushed a commit to tag 0.1.0
in repository backbone.

commit ad73393f400577467960e95db414b305c66f8432
Author: Jeremy Ashkenas <jashkenas at gmail.com>
Date:   Thu Oct 7 12:54:56 2010 -0400

    A real start on the documentation ... intro is done-ish.
---
 backbone.js        |   2 +-
 docs/backbone.html | 170 +++++++------
 docs/docco.css     |   9 +-
 index.html         | 701 ++++++++++-------------------------------------------
 4 files changed, 222 insertions(+), 660 deletions(-)

diff --git a/backbone.js b/backbone.js
index b71e859..5dcfcbe 100644
--- a/backbone.js
+++ b/backbone.js
@@ -1,5 +1,5 @@
 //     (c) 2010 Jeremy Ashkenas, DocumentCloud Inc.
-//     Backbone may be freely distributed under the terms of the MIT license.
+//     Backbone may be freely distributed under the MIT license.
 //     For all details and documentation:
 //     http://documentcloud.github.com/backbone
 
diff --git a/docs/backbone.html b/docs/backbone.html
index a0268b3..ad805a2 100644
--- a/docs/backbone.html
+++ b/docs/backbone.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>  <html> <head>   <title>backbone.js</title>   <meta http-equiv="content-type" content="text/html; charset=UTF-8">   <link rel="stylesheet" media="all" href="docco.css" /> </head> <body>   <div id="container">     <div id="background"></div>          <table cellpadding="0" cellspacing="0">       <thead>         <tr>           <th class="docs">             <h1>               backbone.js             </h1>           </th>           <th class="code">           </th>         </ [...]
-Backbone may be freely distributed under the terms of the MIT license.
+Backbone may be freely distributed under the MIT license.
 For all details and documentation:
 http://documentcloud.github.com/backbone
 </code></pre>             </td>             <td class="code">               <div class="highlight"><pre><span class="p">(</span><span class="kd">function</span><span class="p">(){</span></pre></div>             </td>           </tr>                               <tr id="section-2">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-2">¶</a>               </div>               <h2>Initial Setup</h2>             </td>     [...]
@@ -14,11 +14,12 @@ static properties to be extended.</p>             </td>             <td class="c
     <span class="k">if</span> <span class="p">(</span><span class="nx">classProps</span><span class="p">)</span> <span class="nx">_</span><span class="p">.</span><span class="nx">extend</span><span class="p">(</span><span class="nx">child</span><span class="p">,</span> <span class="nx">classProps</span><span class="p">);</span>
     <span class="nx">child</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">constructor</span> <span class="o">=</span> <span class="nx">child</span><span class="p">;</span>
     <span class="k">return</span> <span class="nx">child</span><span class="p">;</span>
-  <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-7">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-7">¶</a>               </div>               <h2>Backbone.Events</h2>             </td>             <td class="code">               <div class="highlight"><pre></pre></div>             </td>           </tr>                               <tr id="sec [...]
+  <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-7">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-7">¶</a>               </div>               <h2>Backbone.Events</h2>             </td>             <td class="code">               <div class="highlight"><pre></pre></div>             </td>           </tr>                               <tr id="sec [...]
 custom events. You may <code>bind</code> or <code>unbind</code> a callback function to an event;
 <code>trigger</code>-ing an event fires all callbacks in succession.</p>
 
-<pre><code>_.extend(object, Backbone.Events);
+<pre><code>var object = {};
+_.extend(object, Backbone.Events);
 object.bind('expand', function(){ alert('expanded'); });
 object.trigger('expand');
 </code></pre>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">Backbone</span><span class="p">.</span><span class="nx">Events</span> <span class="o">=</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-9">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-9">¶</a>               </div>    [...]
@@ -48,13 +49,20 @@ for all events.</p>             </td>             <td class="code">
         <span class="p">}</span>
       <span class="p">}</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-11">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-11">¶</a>               </div>               <p>Trigger an event, firing all bound callbacks.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">trigger</span> <span class="o">:</s [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-11">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-11">¶</a>               </div>               <p>Trigger an event, firing all bound callbacks. Callbacks are passed the
+same arguments as <code>trigger</code> is, apart from the event name.
+Listening for <code>"all"</code> passes the true event name as the first argument.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">trigger</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kd">var</span> <span class="nx">list</span><span class="p">,</span> <span class="nx">calls</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">l</span><span class="p">;</span>
       <span class="kd">var</span> <span class="nx">calls</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">;</span>
-      <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="mi">2</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
-        <span class="kd">var</span> <span class="nx">list</span> <span class="o">=</span> <span class="nx">calls</span> <span class="o">&&</span> <span class="nx">calls</span><span class="p">[</span><span class="nx">i</span> <span class="o">?</span> <span class="s1">'all'</span> <span class="o">:</span> <span class="nx">ev</span><span class="p">];</span>
-        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">list</span><span class="p">)</span> <span class="k">continue</span><span class="p">;</span>
-        <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">l</span> <span class="o">=</span> <span class="nx">list</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">j</span><span class="o">+ [...]
-          <span class="nx">list</span><span class="p">[</span><span class="nx">j</span><span class="p">].</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">_</span><span class="p">.</span><span class="nx">rest</span><span class="p">(</span><span class="nx">arguments</span><span class="p">));</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">calls</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">))</span> <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="nx">list</span> <span class="o">=</span> <span class="nx">calls</span><span class="p">[</span><span class="nx">ev</span><span class="p">])</span> <span class="p">{</span>
+        <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">l</span> <span class="o">=</span> <span class="nx">list</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</s [...]
+          <span class="nx">list</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">_</span><span class="p">.</span><span class="nx">rest</span><span class="p">(</span><span class="nx">arguments</span><span class="p">));</span>
+        <span class="p">}</span>
+      <span class="p">}</span>
+      <span class="k">if</span> <span class="p">(</span><span class="nx">list</span> <span class="o">=</span> <span class="nx">calls</span><span class="p">[</span><span class="s1">'all'</span><span class="p">])</span> <span class="p">{</span>
+        <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">l</span> <span class="o">=</span> <span class="nx">list</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</s [...]
+          <span class="nx">list</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">arguments</span><span class="p">);</span>
         <span class="p">}</span>
       <span class="p">}</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
@@ -63,9 +71,8 @@ for all events.</p>             </td>             <td class="code">
   <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-12">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-12">¶</a>               </div>               <h2>Backbone.Model</h2>             </td>             <td class="code">               <div class="highlight"><pre></pre></div>             </td>           </tr>                               <tr id="se [...]
 If you do not specify the id, a negative id will be assigned for you.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">Backbone</span><span class="p">.</span><span class="nx">Model</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">attributes</span><span class="p">)</span> <span class="p">{</span>
     <span class="k">this</span><span class="p">.</span><span class="nx">_attributes</span> <span class="o">=</span> <span class="p">{};</span>
-    <span class="nx">attributes</span> <span class="o">=</span> <span class="nx">attributes</span> <span class="o">||</span> <span class="p">{};</span>
-    <span class="k">this</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">attributes</span><span class="p">,</span> <span class="p">{</span><span class="nx">silent</span> <span class="o">:</span> <span class="kc">true</span><span class="p">});</span>
     <span class="k">this</span><span class="p">.</span><span class="nx">cid</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">uniqueId</span><span class="p">(</span><span class="s1">'c'</span><span class="p">);</span>
+    <span class="k">this</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">attributes</span> <span class="o">||</span> <span class="p">{},</span> <span class="p">{</span><span class="nx">silent</span> <span class="o">:</span> <span class="kc">true</span><span class="p">});</span>
     <span class="k">this</span><span class="p">.</span><span class="nx">_formerAttributes</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">attributes</span><span class="p">();</span>
   <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-14">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-14">¶</a>               </div>               <p>Attach all inheritable methods to the Model prototype.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">_</span><span class="p">.</spa [...]
 after the last <code>changed</code> event was fired.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">_formerAttributes</span> <span class="o">:</span> <span class="kc">null</span><span class="p">,</span></pre></div>             </td>           </tr>                               <tr id="section-16">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-16">&#18 [...]
@@ -89,49 +96,48 @@ ID.</p>             </td>             <td class="code">               <div class
     <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-23">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-23">¶</a>               </div>               <p>Get the value of an attribute.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">get</span> <span class="o">:</span> <span class="k [...]
       <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_attributes</span><span class="p">[</span><span class="nx">attr</span><span class="p">];</span>
     <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-24">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-24">¶</a>               </div>               <p>Set a hash of model attributes on the object, firing <code>changed</code> unless you
-choose to silence it.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">set</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">attrs</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
-      <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
+choose to silence it.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">set</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">attrs</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span></pre></div>             </td>           </tr>                               <tr id="section-25">             <td class="docs">   [...]
       <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">attrs</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
       <span class="nx">attrs</span> <span class="o">=</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">_attributes</span> <span class="o">||</span> <span class="nx">attrs</span><span class="p">;</span>
-      <span class="kd">var</span> <span class="nx">now</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_attributes</span><span class="p">;</span>
-      <span class="k">if</span> <span class="p">(</span><span class="s1">'id'</span> <span class="k">in</span> <span class="nx">attrs</span><span class="p">)</span> <span class="p">{</span>
-        <span class="k">this</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="nx">attrs</span><span class="p">.</span><span class="nx">id</span><span class="p">;</span>
-        <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">collection</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">resource</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">collection</span><span class="p">.</span><span class="nx">resource</span> <span class="o">+</span> <span class="s1">'/'</span> <span class= [...]
-      <span class="p">}</span>
-      <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">attr</span> <span class="k">in</span> <span class="nx">attrs</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kd">var</span> <span class="nx">now</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_attributes</span><span class="p">;</span></pre></div>             </td>           </tr>                               <tr id="section-26">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-26">¶</a>               </div>               <p>Run validation if <code>vali [...]
+        <span class="kd">var</span> <span class="nx">error</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">validate</span><span class="p">(</span><span class="nx">attrs</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span>
+          <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
+        <span class="p">}</span>
+      <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-27">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-27">¶</a>               </div>               <p>Check for changes of <code>id</code>.</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="k">if</span> <span class="p">(</span><span c [...]
         <span class="kd">var</span> <span class="nx">val</span> <span class="o">=</span> <span class="nx">attrs</span><span class="p">[</span><span class="nx">attr</span><span class="p">];</span>
         <span class="k">if</span> <span class="p">(</span><span class="nx">val</span> <span class="o">===</span> <span class="s1">''</span><span class="p">)</span> <span class="nx">val</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
         <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">_</span><span class="p">.</span><span class="nx">isEqual</span><span class="p">(</span><span class="nx">now</span><span class="p">[</span><span class="nx">attr</span><span class="p">],</span> <span class="nx">val</span><span class="p">))</span> <span class="p">{</span>
           <span class="nx">now</span><span class="p">[</span><span class="nx">attr</span><span class="p">]</span> <span class="o">=</span> <span class="nx">val</span><span class="p">;</span>
           <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">options</span><span class="p">.</span><span class="nx">silent</span><span class="p">)</span> <span class="p">{</span>
             <span class="k">this</span><span class="p">.</span><span class="nx">_changed</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
-            <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'change:'</span> <span class="o">+</span> <span class="nx">attr</span><span class="p">);</span>
+            <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'change:'</span> <span class="o">+</span> <span class="nx">attr</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
           <span class="p">}</span>
         <span class="p">}</span>
-      <span class="p">}</span>
-      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">options</span><span class="p">.</span><span class="nx">silent</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">_changed</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">changed</span><span class="p">();</span>
+      <span class="p">}</span></pre></div>             </td>           </tr>                               <tr id="section-29">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-29">¶</a>               </div>               <p>Fire the <code>change</code> event, if the model has been changed.</p>             </td>             <td class="code">               <div class="highlight"><pre>      <span class="k">if</span> <s [...]
       <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-25">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-25">¶</a>               </div>               <p>Remove an attribute from the model, firing <code>changed</code> unless you choose to
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-30">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-30">¶</a>               </div>               <p>Remove an attribute from the model, firing <code>changed</code> unless you choose to
 silence it.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">unset</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">attr</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
       <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
       <span class="kd">var</span> <span class="nx">value</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_attributes</span><span class="p">[</span><span class="nx">attr</span><span class="p">];</span>
       <span class="k">delete</span> <span class="k">this</span><span class="p">.</span><span class="nx">_attributes</span><span class="p">[</span><span class="nx">attr</span><span class="p">];</span>
       <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">options</span><span class="p">.</span><span class="nx">silent</span><span class="p">)</span> <span class="p">{</span>
         <span class="k">this</span><span class="p">.</span><span class="nx">_changed</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
-        <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'change:'</span> <span class="o">+</span> <span class="nx">attr</span><span class="p">);</span>
-        <span class="k">this</span><span class="p">.</span><span class="nx">changed</span><span class="p">();</span>
+        <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'change:'</span> <span class="o">+</span> <span class="nx">attr</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+        <span class="k">this</span><span class="p">.</span><span class="nx">change</span><span class="p">();</span>
       <span class="p">}</span>
       <span class="k">return</span> <span class="nx">value</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-26">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-26">¶</a>               </div>               <p>Call this method to fire manually fire a <code>changed</code> event for this model.
-Calling this will cause all objects observing the model to update.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">changed</span> <span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-31">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-31">¶</a>               </div>               <p>Call this method to fire manually fire a <code>change</code> event for this model.
+Calling this will cause all objects observing the model to update.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">change</span> <span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'change'</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">_formerAttributes</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">attributes</span><span class="p">();</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">_changed</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-27">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-27">¶</a>               </div>               <p>Determine if the model has changed since the last <code>changed</code> event.
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-32">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-32">¶</a>               </div>               <p>Determine if the model has changed since the last <code>changed</code> event.
 If you specify an attribute name, determine if that attribute has changed.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">hasChanged</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">attr</span><span class="p">)</span> <span class="p">{</span>
       <span class="k">if</span> <span class="p">(</span><span class="nx">attr</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_formerAttributes</span><span class="p">[</span><span class="nx">attr</span><span class="p">]</span> <span class="o">!=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_attributes</span><span class="p">[</span><span class="nx">attr</span><span class="p">];</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_changed</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-28">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-28">¶</a>               </div>               <p>Return an object containing all the attributes that have changed, or false
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-33">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-33">¶</a>               </div>               <p>Return an object containing all the attributes that have changed, or false
 if there are no changed attributes. Useful for determining what parts of a
 view need to be updated and/or what attributes need to be persisted to
 the server.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">changedAttributes</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">now</span><span class="p">)</span> <span class="p">{</span>
@@ -143,26 +149,26 @@ the server.</p>             </td>             <td class="code">               <d
         <span class="p">}</span>
       <span class="p">}</span>
       <span class="k">return</span> <span class="nx">changed</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-29">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-29">¶</a>               </div>               <p>Get the previous value of an attribute, recorded at the time the last
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-34">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-34">¶</a>               </div>               <p>Get the previous value of an attribute, recorded at the time the last
 <code>changed</code> event was fired.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">formerValue</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">attr</span><span class="p">)</span> <span class="p">{</span>
       <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">attr</span> <span class="o">||</span> <span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">_formerAttributes</span><span class="p">)</span> <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_formerAttributes</span><span class="p">[</span><span class="nx">attr</span><span class="p">];</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-30">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-30">¶</a>               </div>               <p>Get all of the attributes of the model at the time of the previous
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-35">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-35">¶</a>               </div>               <p>Get all of the attributes of the model at the time of the previous
 <code>changed</code> event.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">formerAttributes</span> <span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_formerAttributes</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-31">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-31">¶</a>               </div>               <p>Set a hash of model attributes, and sync the model to the server.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">save</span> <sp [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-36">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-36">¶</a>               </div>               <p>Set a hash of model attributes, and sync the model to the server.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">save</span> <sp [...]
       <span class="nx">attrs</span>   <span class="o">||</span> <span class="p">(</span><span class="nx">attrs</span> <span class="o">=</span> <span class="p">{});</span>
       <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
-      <span class="k">this</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">attrs</span><span class="p">,</span> <span class="nx">options</span><span class="p">);</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">attrs</span><span class="p">,</span> <span class="nx">options</span><span class="p">))</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
       <span class="kd">var</span> <span class="nx">model</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
       <span class="kd">var</span> <span class="nx">success</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">resp</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">model</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">resp</span><span class="p">.</span><span class="nx">model</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">model</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">resp</span><span class="p">.</span><span class="nx">model</span><span class="p">))</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
         <span class="k">if</span> <span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">success</span><span class="p">)</span> <span class="nx">options</span><span class="p">.</span><span class="nx">success</span><span class="p">(</span><span class="nx">model</span><span class="p">,</span> <span class="nx">resp</span><span class="p">);</span>
       <span class="p">};</span>
       <span class="kd">var</span> <span class="nx">method</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">isNew</span><span class="p">()</span> <span class="o">?</span> <span class="s1">'POST'</span> <span class="o">:</span> <span class="s1">'PUT'</span><span class="p">;</span>
       <span class="nx">Backbone</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="nx">method</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="nx">success</span><span class="p">,</span> <span class="nx">options</span><span class="p">.</span><span class="nx">error</span><span class="p">);</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-32">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-32">¶</a>               </div>               <p>Destroy this model on the server.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">destroy</span> <span class="o">:</span> <span c [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-37">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-37">¶</a>               </div>               <p>Destroy this model on the server.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">destroy</span> <span class="o">:</span> <span c [...]
       <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
       <span class="kd">var</span> <span class="nx">model</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
       <span class="kd">var</span> <span class="nx">success</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">resp</span><span class="p">)</span> <span class="p">{</span>
@@ -173,7 +179,7 @@ the server.</p>             </td>             <td class="code">               <d
       <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
     <span class="p">}</span>
 
-  <span class="p">});</span></pre></div>             </td>           </tr>                               <tr id="section-33">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-33">¶</a>               </div>               <h2>Backbone.Collection</h2>             </td>             <td class="code">               <div class="highlight"><pre></pre></div>             </td>           </tr>                               <tr  [...]
+  <span class="p">});</span></pre></div>             </td>           </tr>                               <tr id="section-38">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-38">¶</a>               </div>               <h2>Backbone.Collection</h2>             </td>             <td class="code">               <div class="highlight"><pre></pre></div>             </td>           </tr>                               <tr  [...]
 or unordered. If a <code>comparator</code> is specified, the Collection will maintain
 its models in sort order, as they're added and removed.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">Backbone</span><span class="p">.</span><span class="nx">Collection</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">models</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
     <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
@@ -181,31 +187,31 @@ its models in sort order, as they're added and removed.</p>             </td>
       <span class="k">this</span><span class="p">.</span><span class="nx">comparator</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nx">comparator</span><span class="p">;</span>
       <span class="k">delete</span> <span class="nx">options</span><span class="p">.</span><span class="nx">comparator</span><span class="p">;</span>
     <span class="p">}</span>
-    <span class="k">this</span><span class="p">.</span><span class="nx">_boundOnModelChange</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">bind</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_onModelChange</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
+    <span class="k">this</span><span class="p">.</span><span class="nx">_boundOnModelEvent</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">bind</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_onModelEvent</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
     <span class="k">this</span><span class="p">.</span><span class="nx">_initialize</span><span class="p">();</span>
     <span class="k">if</span> <span class="p">(</span><span class="nx">models</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">refresh</span><span class="p">(</span><span class="nx">models</span><span class="p">,</span><span class="kc">true</span><span class="p">);</span>
-  <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-35">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-35">¶</a>               </div>               <p>Define the Collection's inheritable methods.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">_</span><span class="p">.</span><span cl [...]
+  <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-40">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-40">¶</a>               </div>               <p>Define the Collection's inheritable methods.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">_</span><span class="p">.</span><span cl [...]
 
-    <span class="nx">model</span> <span class="o">:</span> <span class="nx">Backbone</span><span class="p">.</span><span class="nx">Model</span><span class="p">,</span></pre></div>             </td>           </tr>                               <tr id="section-36">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-36">¶</a>               </div>               <p>Override this function to get convenient logging in the c [...]
+    <span class="nx">model</span> <span class="o">:</span> <span class="nx">Backbone</span><span class="p">.</span><span class="nx">Model</span><span class="p">,</span></pre></div>             </td>           </tr>                               <tr id="section-41">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-41">¶</a>               </div>               <p>Override this function to get convenient logging in the c [...]
       <span class="k">return</span> <span class="s1">'Collection ('</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">length</span> <span class="o">+</span> <span class="s2">" models)"</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-37">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-37">¶</a>               </div>               <p>Get a model from the set by id.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">get</span> <span class="o">:</span> <span class=" [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-42">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-42">¶</a>               </div>               <p>Get a model from the set by id.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">get</span> <span class="o">:</span> <span class=" [...]
       <span class="k">return</span> <span class="nx">id</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">_byId</span><span class="p">[</span><span class="nx">id</span><span class="p">.</span><span class="nx">id</span> <span class="o">!=</span> <span class="kc">null</span> <span class="o">?</span> <span class="nx">id</span><span class="p">.</span><span class="nx">id</span> <span class="o">:</span> <span class="nx">id</span><span  [...]
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-38">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-38">¶</a>               </div>               <p>Get a model from the set by client id.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">getByCid</span> <span class="o">:</span> < [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-43">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-43">¶</a>               </div>               <p>Get a model from the set by client id.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">getByCid</span> <span class="o">:</span> < [...]
       <span class="k">return</span> <span class="nx">cid</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">_byCid</span><span class="p">[</span><span class="nx">cid</span><span class="p">.</span><span class="nx">cid</span> <span class="o">||</span> <span class="nx">cid</span><span class="p">];</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-39">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-39">¶</a>               </div>               <p>Get the model at the given index.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">at</span><span class="o">:</span> <span class=" [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-44">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-44">¶</a>               </div>               <p>Get the model at the given index.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">at</span><span class="o">:</span> <span class=" [...]
       <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">models</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-40">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-40">¶</a>               </div>               <p>What are the ids for every model in the set?</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">getIds</span> <span class="o">:</spa [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-45">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-45">¶</a>               </div>               <p>What are the ids for every model in the set?</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">getIds</span> <span class="o">:</spa [...]
       <span class="k">return</span> <span class="nx">_</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_byId</span><span class="p">);</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-41">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-41">¶</a>               </div>               <p>What are the client ids for every model in the set?</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">getCids</span> <span class="o [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-46">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-46">¶</a>               </div>               <p>What are the client ids for every model in the set?</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">getCids</span> <span class="o [...]
       <span class="k">return</span> <span class="nx">_</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_byCid</span><span class="p">);</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-42">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-42">¶</a>               </div>               <p>Pluck an attribute from each model in the collection.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">pluck</span> <span class="o [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-47">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-47">¶</a>               </div>               <p>Pluck an attribute from each model in the collection.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">pluck</span> <span class="o [...]
       <span class="k">return</span> <span class="nx">_</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">models</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">model</span><span class="p">){</span> <span class="k">return</span> <span class="nx">model</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span [...]
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-43">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-43">¶</a>               </div>               <p>Add a model, or list of models to the set. Pass <strong>silent</strong> to avoid
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-48">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-48">¶</a>               </div>               <p>Add a model, or list of models to the set. Pass <strong>silent</strong> to avoid
 firing the <code>added</code> event for every new model.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">add</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">models</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
       <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">_</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">models</span><span class="p">))</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_add</span><span class="p">(</span><span class="nx">models</span><span class="p">,</span> <span class="nx">options</span><span class="p">);</span>
       <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="nx">i</span><span class="o"><</span><span class="nx">models</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">_add [...]
       <span class="k">return</span> <span class="nx">models</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-44">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-44">¶</a>               </div>               <p>Internal implementation of adding a single model to the set.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">_add</span> <span cl [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-49">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-49">¶</a>               </div>               <p>Internal implementation of adding a single model to the set.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">_add</span> <span cl [...]
       <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
       <span class="kd">var</span> <span class="nx">already</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">model</span><span class="p">);</span>
       <span class="k">if</span> <span class="p">(</span><span class="nx">already</span><span class="p">)</span> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">([</span><span class="s2">"Can't add the same model to a set twice"</span><span class="p">,</span> <span class="nx">already</span><span class="p">.</span><span class="nx">id</span><span class="p">]);</span>
@@ -214,16 +220,16 @@ firing the <code>added</code> event for every new model.</p>             </td>
       <span class="nx">model</span><span class="p">.</span><span class="nx">collection</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
       <span class="kd">var</span> <span class="nx">index</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">comparator</span> <span class="o">?</span> <span class="k">this</span><span class="p">.</span><span class="nx">sortedIndex</span><span class="p">(</span><span class="nx">model</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">comparator</span><span class="p">)</span> <span class="o">:< [...]
       <span class="k">this</span><span class="p">.</span><span class="nx">models</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">model</span><span class="p">);</span>
-      <span class="nx">model</span><span class="p">.</span><span class="nx">bind</span><span class="p">(</span><span class="s1">'change'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">_boundOnModelChange</span><span class="p">);</span>
+      <span class="nx">model</span><span class="p">.</span><span class="nx">bind</span><span class="p">(</span><span class="s1">'all'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">_boundOnModelEvent</span><span class="p">);</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">length</span><span class="o">++</span><span class="p">;</span>
       <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">options</span><span class="p">.</span><span class="nx">silent</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'add'</span><span class="p">,</span> <span class="nx">model</span><span class="p">);</span>
       <span class="k">return</span> <span class="nx">model</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-45">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-45">¶</a>               </div>               <p>Remove a model, or a list of models from the set. Pass silent to avoid
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-50">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-50">¶</a>               </div>               <p>Remove a model, or a list of models from the set. Pass silent to avoid
 firing the <code>removed</code> event for every model removed.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">remove</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">models</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
       <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">_</span><span class="p">.</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">models</span><span class="p">))</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_remove</span><span class="p">(</span><span class="nx">models</span><span class="p">,</span> <span class="nx">options</span><span class="p">);</span>
       <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span> <span class="nx">i</span><span class="o"><</span><span class="nx">models</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">_rem [...]
       <span class="k">return</span> <span class="nx">models</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-46">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-46">¶</a>               </div>               <p>Internal implementation of removing a single model from the set.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">_remove</span> < [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-51">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-51">¶</a>               </div>               <p>Internal implementation of removing a single model from the set.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">_remove</span> < [...]
       <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
       <span class="nx">model</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">model</span><span class="p">);</span>
       <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">model</span><span class="p">)</span> <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
@@ -231,18 +237,18 @@ firing the <code>removed</code> event for every model removed.</p>             <
       <span class="k">delete</span> <span class="k">this</span><span class="p">.</span><span class="nx">_byCid</span><span class="p">[</span><span class="nx">model</span><span class="p">.</span><span class="nx">cid</span><span class="p">];</span>
       <span class="k">delete</span> <span class="nx">model</span><span class="p">.</span><span class="nx">collection</span><span class="p">;</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">models</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">model</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
-      <span class="nx">model</span><span class="p">.</span><span class="nx">unbind</span><span class="p">(</span><span class="s1">'change'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">_boundOnModelChange</span><span class="p">);</span>
+      <span class="nx">model</span><span class="p">.</span><span class="nx">unbind</span><span class="p">(</span><span class="s1">'all'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">_boundOnModelEvent</span><span class="p">);</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">length</span><span class="o">--</span><span class="p">;</span>
       <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">options</span><span class="p">.</span><span class="nx">silent</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'remove'</span><span class="p">,</span> <span class="nx">model</span><span class="p">);</span>
       <span class="k">return</span> <span class="nx">model</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-47">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-47">¶</a>               </div>               <p>Force the set to re-sort itself. You don't need to call this under normal
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-52">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-52">¶</a>               </div>               <p>Force the set to re-sort itself. You don't need to call this under normal
 circumstances, as the set will maintain sort order as each item is added.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">sort</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
       <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
       <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">comparator</span><span class="p">)</span> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'Cannot sort a set without a comparator'</span><span class="p">);</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">models</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">sortBy</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">comparator</span><span class="p">);</span>
-      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">options</span><span class="p">.</span><span class="nx">silent</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'refresh'</span><span class="p">);</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">options</span><span class="p">.</span><span class="nx">silent</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'refresh'</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-48">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-48">¶</a>               </div>               <p>When you have more items than you want to add or remove individually,
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-53">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-53">¶</a>               </div>               <p>When you have more items than you want to add or remove individually,
 you can refresh the entire set with a new list of models, without firing
 any <code>added</code> or <code>removed</code> events. Fires <code>refreshed</code> when finished.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">refresh</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">models</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
       <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
@@ -255,9 +261,9 @@ any <code>added</code> or <code>removed</code> events. Fires <code>refreshed</co
       <span class="p">}</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">_initialize</span><span class="p">();</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">models</span><span class="p">,</span> <span class="p">{</span><span class="nx">silent</span><span class="o">:</span> <span class="kc">true</span><span class="p">});</span>
-      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">options</span><span class="p">.</span><span class="nx">silent</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'refresh'</span><span class="p">);</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">options</span><span class="p">.</span><span class="nx">silent</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'refresh'</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-49">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-49">¶</a>               </div>               <p>Fetch the default set of models for this collection, refreshing the
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-54">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-54">¶</a>               </div>               <p>Fetch the default set of models for this collection, refreshing the
 collection.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">fetch</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
       <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
       <span class="kd">var</span> <span class="nx">collection</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
@@ -267,39 +273,45 @@ collection.</p>             </td>             <td class="code">               <d
       <span class="p">};</span>
       <span class="nx">Backbone</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="s1">'GET'</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="nx">success</span><span class="p">,</span> <span class="nx">options</span><span class="p">.</span><span class="nx">error</span><span class="p">);</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-50">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-50">¶</a>               </div>               <p>Create a new instance of a model in this collection.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">create</span> <span class="o [...]
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-55">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-55">¶</a>               </div>               <p>Create a new instance of a model in this collection.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">create</span> <span class="o [...]
       <span class="nx">options</span> <span class="o">||</span> <span class="p">(</span><span class="nx">options</span> <span class="o">=</span> <span class="p">{});</span>
       <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">model</span> <span class="k">instanceof</span> <span class="nx">Backbone</span><span class="p">.</span><span class="nx">Model</span><span class="p">))</span> <span class="nx">model</span> <span class="o">=</span> <span class="k">new</span> <span class="k">this</span><span class="p">.</span><span class="nx">model</span><span class="p">(</span><span class="nx">model</spa [...]
       <span class="nx">model</span><span class="p">.</span><span class="nx">collection</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
       <span class="kd">var</span> <span class="nx">success</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">model</span><span class="p">,</span> <span class="nx">resp</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">model</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">resp</span><span class="p">.</span><span class="nx">model</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">model</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="nx">resp</span><span class="p">.</span><span class="nx">model</span><span class="p">))</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
         <span class="nx">model</span><span class="p">.</span><span class="nx">collection</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">model</span><span class="p">);</span>
         <span class="k">if</span> <span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">success</span><span class="p">)</span> <span class="nx">options</span><span class="p">.</span><span class="nx">success</span><span class="p">(</span><span class="nx">model</span><span class="p">,</span> <span class="nx">resp</span><span class="p">);</span>
       <span class="p">};</span>
       <span class="k">return</span> <span class="nx">model</span><span class="p">.</span><span class="nx">save</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="p">{</span><span class="nx">success</span> <span class="o">:</span> <span class="nx">success</span><span class="p">,</span> <span class="nx">error</span> <span class="o">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">error</span><span class="p">});</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-51">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-51">¶</a>               </div>               <p>Initialize or re-initialize all internal state. Called when the
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-56">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-56">¶</a>               </div>               <p>Initialize or re-initialize all internal state. Called when the
 collection is refreshed.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">_initialize</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">length</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">models</span> <span class="o">=</span> <span class="p">[];</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">_byId</span> <span class="o">=</span> <span class="p">{};</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">_byCid</span> <span class="o">=</span> <span class="p">{};</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-52">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-52">¶</a>               </div>               <p>Internal method called every time a model in the set fires an event.
-Sets need to update their indexes when models change ids.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">_onModelChange</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">model</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">if</span> <span class="p">(</span><span class="nx">model</span><span class="p">.</span><span class="nx">hasChanged</span><span class="p">(</span><span class="s1">'id'</span><span class="p">))</span> <span class="p">{</span>
-        <span class="k">delete</span> <span class="k">this</span><span class="p">.</span><span class="nx">_byId</span><span class="p">[</span><span class="nx">model</span><span class="p">.</span><span class="nx">formerValue</span><span class="p">(</span><span class="s1">'id'</span><span class="p">)];</span>
-        <span class="k">this</span><span class="p">.</span><span class="nx">_byId</span><span class="p">[</span><span class="nx">model</span><span class="p">.</span><span class="nx">id</span><span class="p">]</span> <span class="o">=</span> <span class="nx">model</span><span class="p">;</span>
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-57">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-57">¶</a>               </div>               <p>Internal method called every time a model in the set fires an event.
+Sets need to update their indexes when models change ids.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">_onModelEvent</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">ev</span><span class="p">,</span> <span class="nx">model</span><span class="p">,</span> <span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">switch</span> <span class="p">(</span><span class="nx">ev</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">case</span> <span class="s1">'change'</span><span class="o">:</span>
+          <span class="k">if</span> <span class="p">(</span><span class="nx">model</span><span class="p">.</span><span class="nx">hasChanged</span><span class="p">(</span><span class="s1">'id'</span><span class="p">))</span> <span class="p">{</span>
+            <span class="k">delete</span> <span class="k">this</span><span class="p">.</span><span class="nx">_byId</span><span class="p">[</span><span class="nx">model</span><span class="p">.</span><span class="nx">formerValue</span><span class="p">(</span><span class="s1">'id'</span><span class="p">)];</span>
+            <span class="k">this</span><span class="p">.</span><span class="nx">_byId</span><span class="p">[</span><span class="nx">model</span><span class="p">.</span><span class="nx">id</span><span class="p">]</span> <span class="o">=</span> <span class="nx">model</span><span class="p">;</span>
+          <span class="p">}</span>
+          <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'change'</span><span class="p">,</span> <span class="nx">model</span><span class="p">);</span>
+          <span class="k">break</span><span class="p">;</span>
+        <span class="k">case</span> <span class="s1">'error'</span><span class="o">:</span>
+          <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="nx">model</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span>
       <span class="p">}</span>
-      <span class="k">this</span><span class="p">.</span><span class="nx">trigger</span><span class="p">(</span><span class="s1">'change'</span><span class="p">,</span> <span class="nx">model</span><span class="p">);</span>
     <span class="p">}</span>
 
-  <span class="p">});</span></pre></div>             </td>           </tr>                               <tr id="section-53">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-53">¶</a>               </div>               <p>Underscore methods that we want to implement on the Collection.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="kd">var</span> <span cla [...]
+  <span class="p">});</span></pre></div>             </td>           </tr>                               <tr id="section-58">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-58">¶</a>               </div>               <p>Underscore methods that we want to implement on the Collection.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="kd">var</span> <span cla [...]
     <span class="s1">'reject'</span><span class="p">,</span> <span class="s1">'all'</span><span class="p">,</span> <span class="s1">'any'</span><span class="p">,</span> <span class="s1">'include'</span><span class="p">,</span> <span class="s1">'invoke'</span><span class="p">,</span> <span class="s1">'max'</span><span class="p">,</span> <span class="s1">'min'</span><span class="p">,</span> <span class="s1">'sortBy'</span><spa [...]
     <span class="s1">'sortedIndex'</span><span class="p">,</span> <span class="s1">'toArray'</span><span class="p">,</span> <span class="s1">'size'</span><span class="p">,</span> <span class="s1">'first'</span><span class="p">,</span> <span class="s1">'rest'</span><span class="p">,</span> <span class="s1">'last'</span><span class="p">,</span> <span class="s1">'without'</span><span class="p">,</span>
-    <span class="s1">'indexOf'</span><span class="p">,</span> <span class="s1">'lastIndexOf'</span><span class="p">,</span> <span class="s1">'isEmpty'</span><span class="p">];</span></pre></div>             </td>           </tr>                               <tr id="section-54">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-54">¶</a>               </div>               <p>Mix in each Undersc [...]
+    <span class="s1">'indexOf'</span><span class="p">,</span> <span class="s1">'lastIndexOf'</span><span class="p">,</span> <span class="s1">'isEmpty'</span><span class="p">];</span></pre></div>             </td>           </tr>                               <tr id="section-59">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-59">¶</a>               </div>               <p>Mix in each Undersc [...]
     <span class="nx">Backbone</span><span class="p">.</span><span class="nx">Collection</span><span class="p">.</span><span class="nx">prototype</span><span class="p">[</span><span class="nx">method</span><span class="p">]</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
       <span class="k">return</span> <span class="nx">_</span><span class="p">[</span><span class="nx">method</span><span class="p">].</span><span class="nx">apply</span><span class="p">(</span><span class="nx">_</span><span class="p">,</span> <span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">models</span><span class="p">].</span><span class="nx">concat</span><span class="p">(</span><span class="nx">_</span><span class="p">.</span><span class="nx" [...]
     <span class="p">};</span>
-  <span class="p">});</span></pre></div>             </td>           </tr>                               <tr id="section-55">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-55">¶</a>               </div>               <h2>Backbone.View</h2>             </td>             <td class="code">               <div class="highlight"><pre></pre></div>             </td>           </tr>                               <tr id="se [...]
+  <span class="p">});</span></pre></div>             </td>           </tr>                               <tr id="section-60">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-60">¶</a>               </div>               <h2>Backbone.View</h2>             </td>             <td class="code">               <div class="highlight"><pre></pre></div>             </td>           </tr>                               <tr id="se [...]
 if an existing element is not provided...</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">Backbone</span><span class="p">.</span><span class="nx">View</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
     <span class="k">this</span><span class="p">.</span><span class="nx">modes</span> <span class="o">=</span> <span class="p">{};</span>
     <span class="k">this</span><span class="p">.</span><span class="nx">_initialize</span><span class="p">(</span><span class="nx">options</span> <span class="o">||</span> <span class="p">{});</span>
@@ -312,16 +324,16 @@ if an existing element is not provided...</p>             </td>             <td
       <span class="k">this</span><span class="p">.</span><span class="nx">el</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">make</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">tagName</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">);</span>
     <span class="p">}</span>
     <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
-  <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-57">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-57">¶</a>               </div>               <p>jQuery lookup, scoped to DOM elements within the current view.
+  <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-62">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-62">¶</a>               </div>               <p>jQuery lookup, scoped to DOM elements within the current view.
 This should be prefered to global jQuery lookups, if you're dealing with
-a specific view.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="kd">var</span> <span class="nx">jQueryScoped</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">selector</span><span class="p">)</span> <span class="p">{</span>
+a specific view.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="kd">var</span> <span class="nx">jQueryDelegate</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">selector</span><span class="p">)</span> <span class="p">{</span>
     <span class="k">return</span> <span class="nx">$</span><span class="p">(</span><span class="nx">selector</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">el</span><span class="p">);</span>
-  <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-58">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-58">¶</a>               </div>               <p>Set up all interitable <strong>Backbone.View</strong> properties and methods.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">_</span [...]
-    <span class="nx">jQuery</span>  <span class="o">:</span> <span class="nx">jQueryScoped</span><span class="p">,</span></pre></div>             </td>           </tr>                               <tr id="section-61">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-61">¶</a>               </div>               <p><strong>render</strong> is the core function that your view should override, in order
+  <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-63">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-63">¶</a>               </div>               <p>Set up all interitable <strong>Backbone.View</strong> properties and methods.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="nx">_</span [...]
+    <span class="nx">jQuery</span>  <span class="o">:</span> <span class="nx">jQueryDelegate</span><span class="p">,</span></pre></div>             </td>           </tr>                               <tr id="section-66">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-66">¶</a>               </div>               <p><strong>render</strong> is the core function that your view should override, in order
 to populate its element (<code>this.el</code>), with the appropriate HTML. The
 convention is for <strong>render</strong> to always return <code>this</code>.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">render</span> <span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-62">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-62">¶</a>               </div>               <p>For small amounts of DOM Elements, where a full-blown template isn't
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-67">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-67">¶</a>               </div>               <p>For small amounts of DOM Elements, where a full-blown template isn't
 needed, use <strong>make</strong> to manufacture elements, one at a time.</p>
 
 <pre><code>var el = this.make('li', {'class': 'row'}, this.model.get('title'));
@@ -330,15 +342,15 @@ needed, use <strong>make</strong> to manufacture elements, one at a time.</p>
       <span class="k">if</span> <span class="p">(</span><span class="nx">attributes</span><span class="p">)</span> <span class="nx">$</span><span class="p">(</span><span class="nx">el</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="nx">attributes</span><span class="p">);</span>
       <span class="k">if</span> <span class="p">(</span><span class="nx">content</span><span class="p">)</span> <span class="nx">$</span><span class="p">(</span><span class="nx">el</span><span class="p">).</span><span class="nx">html</span><span class="p">(</span><span class="nx">content</span><span class="p">);</span>
       <span class="k">return</span> <span class="nx">el</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-63">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-63">¶</a>               </div>               <p>Makes the view enter a mode. Modes have both a 'mode' and a 'group',
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-68">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-68">¶</a>               </div>               <p>Makes the view enter a mode. Modes have both a 'mode' and a 'group',
 and are mutually exclusive with any other modes in the same group.
 Setting will update the view's modes hash, as well as set an HTML class
 of <em>[mode]_[group]</em> on the view's element. Convenient way to swap styles
 and behavior.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">setMode</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">mode</span><span class="p">,</span> <span class="nx">group</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">modes</span><span class="p">[</span><span class="nx">group</span><span class="p">]</span> <span class="o">==</span> <span class="nx">mode</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">modes</span><span class="p">[</span><span class="nx">group</span><span class="p">]</span> <span class="o">===</span> <span class="nx">mode</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
       <span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">el</span><span class="p">).</span><span class="nx">setMode</span><span class="p">(</span><span class="nx">mode</span><span class="p">,</span> <span class="nx">group</span><span class="p">);</span>
       <span class="k">this</span><span class="p">.</span><span class="nx">modes</span><span class="p">[</span><span class="nx">group</span><span class="p">]</span> <span class="o">=</span> <span class="nx">mode</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-64">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-64">¶</a>               </div>               <p>Set callbacks, where this.callbacks is a hash of</p>
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-69">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-69">¶</a>               </div>               <p>Set callbacks, where this.callbacks is a hash of</p>
 
 <p><em>{selector.event_name: callback_name}</em></p>
 
@@ -367,7 +379,7 @@ bubble change events at all.</p>             </td>             <td class="code">
         <span class="p">}</span>
       <span class="p">}</span>
       <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
-    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-65">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-65">¶</a>               </div>               <p>Performs the initial configuration of a View with a set of options.
+    <span class="p">},</span></pre></div>             </td>           </tr>                               <tr id="section-70">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-70">¶</a>               </div>               <p>Performs the initial configuration of a View with a set of options.
 Keys with special meaning <em>(model, collection, id, className)</em>, are
 attatched directly to the view.</p>             </td>             <td class="code">               <div class="highlight"><pre>    <span class="nx">_initialize</span> <span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
       <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">options</span><span class="p">)</span> <span class="nx">options</span> <span class="o">=</span> <span class="nx">_</span><span class="p">.</span><span class="nx">extend</span><span class="p">({},</span> <span class="k">this</span><span class="p">.</span><span class="nx">options</span><span class="p">,</span> <span class="nx">options</span><span class="p">);</span>
@@ -378,11 +390,11 @@ attatched directly to the view.</p>             </td>             <td class="cod
       <span class="k">this</span><span class="p">.</span><span class="nx">options</span> <span class="o">=</span> <span class="nx">options</span><span class="p">;</span>
     <span class="p">}</span>
 
-  <span class="p">});</span></pre></div>             </td>           </tr>                               <tr id="section-66">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-66">¶</a>               </div>               <p>Set up inheritance for the model, collection, and view.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="kd">var</span> <span class="nx"> [...]
+  <span class="p">});</span></pre></div>             </td>           </tr>                               <tr id="section-71">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-71">¶</a>               </div>               <p>Set up inheritance for the model, collection, and view.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="kd">var</span> <span class="nx"> [...]
     <span class="kd">var</span> <span class="nx">child</span> <span class="o">=</span> <span class="nx">inherits</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">protoProps</span><span class="p">,</span> <span class="nx">classProps</span><span class="p">);</span>
     <span class="nx">child</span><span class="p">.</span><span class="nx">extend</span> <span class="o">=</span> <span class="nx">extend</span><span class="p">;</span>
     <span class="k">return</span> <span class="nx">child</span><span class="p">;</span>
-  <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-67">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-67">¶</a>               </div>               <p>Override this function to change the manner in which Backbone persists
+  <span class="p">};</span></pre></div>             </td>           </tr>                               <tr id="section-72">             <td class="docs">               <div class="pilwrap">                 <a class="pilcrow" href="#section-72">¶</a>               </div>               <p>Override this function to change the manner in which Backbone persists
 models to the server. You will be passed the type of request, and the
 model in question. By default, uses jQuery to make a RESTful Ajax request
 to the model's <code>url()</code>. Some possible customizations could be:</p>
diff --git a/docs/docco.css b/docs/docco.css
index 76e818b..b2e6019 100644
--- a/docs/docco.css
+++ b/docs/docco.css
@@ -1,8 +1,8 @@
 /*--------------------- Layout and Typography ----------------------------*/
 body {
   font-family: 'Palatino Linotype', 'Book Antiqua', Palatino, FreeSerif, serif;
-  font-size: 16px;
-  line-height: 24px;
+  font-size: 15px;
+  line-height: 22px;
   color: #252519;
   margin: 0; padding: 0;
 }
@@ -72,10 +72,11 @@ table td {
   outline: 0;
 }
   td.docs, th.docs {
-    max-width: 500px;
-    min-width: 500px;
+    max-width: 450px;
+    min-width: 450px;
     min-height: 5px;
     padding: 10px 25px 1px 50px;
+    overflow-x: hidden;
     vertical-align: top;
     text-align: left;
   }
diff --git a/index.html b/index.html
index c03c1e5..ecda7ff 100644
--- a/index.html
+++ b/index.html
@@ -6,8 +6,8 @@
   <title>Backbone: ...</title>
   <style>
     body {
-      font-size: 15px;
-      line-height: 22px;
+      font-size: 14px;
+      line-height: 20px;
       font-family: Helvetica Neue, Helvetica, Arial;
       background: #f4f4f4 url(docs/background.png);
     }
@@ -21,13 +21,15 @@
       width: 180px;
       overflow-y: auto;
       overflow-x: hidden;
-      padding: 30px 0 0 30px;
+      padding: 15px 0 0 30px;
       border-right: 1px solid #ddd;
       box-shadow: 0 0 10px 000; -webkit-box-shadow: 0 0 25px #ddd; -moz-box-shadow: ;
     }
-      div.toc_title {
+      a.toc_title, a.toc_title:visited {
+        display: block;
+        color: black;
         font-weight: bold;
-        cursor: pointer;
+        margin-top: 15px;
       }
         div.toc_title:hover {
           text-decoration: underline;
@@ -35,7 +37,7 @@
       ul.toc_section {
         font-size: 11px;
         line-height: 14px;
-        margin: 5px 0 15px 0;
+        margin: 5px 0 0 0;
         padding-left: 0px;
         list-style-type: none;
         font-family: Lucida Grande;
@@ -44,12 +46,12 @@
           cursor: pointer;
           margin: 0 0 3px 0;
         }
-          .toc_section li span:hover {
-            text-decoration: underline;
+          .toc_section li a {
+            color: black;
           }
     div.container {
       width: 720px;
-      margin: 50px 0 50px 240px;
+      margin: 40px 0 50px 240px;
     }
     p, li {
       margin: 16px 0 16px 0;
@@ -57,7 +59,6 @@
     }
     a, a:visited {
       color: #444;
-      padding: 0 2px;
       text-decoration: none;
     }
     a:active, a:hover {
@@ -65,8 +66,11 @@
       text-decoration: underline;
     }
     h1, h2, h3, h4, h5, h6 {
-      margin-top: 40px;
+      padding-top: 20px;
     }
+      h2 {
+        font-size: 20px;
+      }
     b.header {
       font-size: 18px;
     }
@@ -76,18 +80,14 @@
       margin-left: 20px;
     }
     table {
-      margin: 16px 0; padding: 0;
+      margin: 15px 0 0; padding: 0;
     }
       tr, td {
         margin: 0; padding: 0;
       }
         td {
-          padding: 9px 15px 9px 0;
+          padding: 0px 15px 5px 0;
         }
-          td.definition {
-            line-height: 18px;
-            font-size: 14px;
-          }
     code, pre, tt {
       font-family: Monaco, Consolas, "Lucida Console", monospace;
       font-size: 12px;
@@ -110,70 +110,73 @@
 <body>
 
   <div class="toc interface">
-    <div class="toc_title">
+    <a class="toc_title" href="#Introduction">
+      Introduction
+    </a>
+    <a class="toc_title" href="#Events">
       Events
-    </div>
+    </a>
     <ul class="toc_section">
-      <li>– <span>bind</span></li>
-      <li>– <span>unbind</span></li>
-      <li>– <span>trigger</span></li>
+      <li>– <a href="#Events-bind">bind</a></li>
+      <li>– <a href="#Events-unbind">unbind</a></li>
+      <li>– <a href="#Events-trigger">trigger</a></li>
     </ul>
-    <div class="toc_title">
+    <a class="toc_title" href="#Model">
       Model
-    </div>
+    </a>
     <ul class="toc_section">
-      <li>– <span>get</span></li>
-      <li>– <span>set</span></li>
-      <li>– <span>unset</span></li>
-      <li>– <span>attributes</span></li>
-      <li>– <span>save</span></li>
-      <li>– <span>destroy</span></li>
-      <li>– <span>validate</span></li>
-      <li>– <span>url</span></li>
-      <li>– <span>clone</span></li>
-      <li>– <span>toString</span></li>
-      <li>– <span>isEqual</span></li>
-      <li>– <span>isNew</span></li>
-      <li>– <span>change</span></li>
-      <li>– <span>hasChanged</span></li>
-      <li>– <span>changedAttributes</span></li>
-      <li>– <span>formerValue</span></li>
-      <li>– <span>formerAttributes</span></li>
+      <li>– <a href="#Model-get">get</a></li>
+      <li>– <a href="#Model-set">set</a></li>
+      <li>– <a href="#Model-unset">unset</a></li>
+      <li>– <a href="#Model-attributes">attributes</a></li>
+      <li>– <a href="#Model-save">save</a></li>
+      <li>– <a href="#Model-destroy">destroy</a></li>
+      <li>– <a href="#Model-validate">validate</a></li>
+      <li>– <a href="#Model-url">url</a></li>
+      <li>– <a href="#Model-clone">clone</a></li>
+      <li>– <a href="#Model-toString">toString</a></li>
+      <li>– <a href="#Model-isEqual">isEqual</a></li>
+      <li>– <a href="#Model-isNew">isNew</a></li>
+      <li>– <a href="#Model-change">change</a></li>
+      <li>– <a href="#Model-hasChanged">hasChanged</a></li>
+      <li>– <a href="#Model-changedAttributes">changedAttributes</a></li>
+      <li>– <a href="#Model-formerValue">formerValue</a></li>
+      <li>– <a href="#Model-formerAttributes">formerAttributes</a></li>
     </ul>
-    <div class="toc_title">
+    <a class="toc_title" href="#Collection">
       Collection
-    </div>
+    </a>
     <ul class="toc_section">
-      <li>– <span>add</span></li>
-      <li>– <span>remove</span></li>
-      <li>– <span>get</span></li>
-      <li>– <span>getIds</span></li>
-      <li>– <span>at</span></li>
-      <li>– <span>sort</span></li>
-      <li>– <span>refresh</span></li>
-      <li>– <span>fetch</span></li>
-      <li>– <span>create</span></li>
-      <li>– <span>getByCid</span></li>
-      <li>– <span>getCids</span></li>
-      <li>– <span>toString</span></li>
-      <li>– <span>pluck</span></li>
-      <li>– <span>Underscore Methods (24)</span></li>
+      <li>– <a href="#Collection-add">add</a></li>
+      <li>– <a href="#Collection-remove">remove</a></li>
+      <li>– <a href="#Collection-get">get</a></li>
+      <li>– <a href="#Collection-getIds">getIds</a></li>
+      <li>– <a href="#Collection-at">at</a></li>
+      <li>– <a href="#Collection-sort">sort</a></li>
+      <li>– <a href="#Collection-refresh">refresh</a></li>
+      <li>– <a href="#Collection-fetch">fetch</a></li>
+      <li>– <a href="#Collection-create">create</a></li>
+      <li>– <a href="#Collection-getByCid">getByCid</a></li>
+      <li>– <a href="#Collection-getCids">getCids</a></li>
+      <li>– <a href="#Collection-toString">toString</a></li>
+      <li>– <a href="#Collection-pluck">pluck</a></li>
+      <li>– <a href="#Collection-Underscore-Methods">Underscore Methods (24)</a></li>
     </ul>
-    <div class="toc_title">
+    <a class="toc_title" href="#Request">
       Request
-    </div>
+    </a>
     <ul class="toc_section">
-      <li>– <span>Backbone.request</span></li>
+      <li>– <a href="#Request">Backbone.request</a></li>
     </ul>
-    <div class="toc_title">
+    <a class="toc_title" href="#View">
       View
-    </div>
+    </a>
     <ul class="toc_section">
-      <li>– <span>$ (jQuery)</span></li>
-      <li>– <span>render</span></li>
-      <li>– <span>make</span></li>
-      <li>– <span>setMode</span></li>
-      <li>– <span>setCallbacks</span></li>
+      <li>– <a href="View-jQuery">$ (jQuery)</a></li>
+      <li>– <a href="View-render">render</a></li>
+      <li>– <a href="View-make">make</a></li>
+      <li>– <a href="View-setMode">setMode</a></li>
+      <li>– <a href="View-setCallbacks">setCallbacks</a></li>
     </ul>
   </div>
 
@@ -192,520 +195,91 @@
     </p>
 
     <p>
-      <b>Current Version:</b> <a href="http://github.com/documentcloud/backbone/tarball/0.1.0">0.1.0</a>
-    </p>
-
-    <p>
-      <i>Backbone is an open-source component of <a href="http://documentcloud.org/">DocumentCloud</a>.</i>
-    </p>
-
-    <h2 id="installation">Installation</h2>
-
-    <ol>
-      <li>
-        Grab the gem:<br />
-        <tt>gem install jammit</tt>
-      </li>
-      <li>
-        Add the gem to Rails' <b>environment.rb</b> inside of the initializer:<br />
-        <tt>config.gem "jammit"</tt>
-      </li>
-      <li>
-        If you're using <b>Rails 2</b>, edit <b>config/routes.rb</b> to give Jammit a route
-        ( <b>/assets</b> by default) for dynamic asset packaging and caching.
-        In <b>Rails 3</b>, this route is loaded automatically.
-        <br /><br />
-
-<pre>
-ActionController::Routing::Routes.draw do |map|
-  ...
-  Jammit::Routes.draw(map)
-  ...
-end</pre>
-      </li>
-    </ol>
-
-    <p>
-      <i>Note: If you don't already have the
-      <a href="http://github.com/sstephenson/ruby-yui-compressor">ruby-yui-compressor</a> or
-      <a href="http://github.com/documentcloud/closure-compiler">closure-compiler</a>
-      gems installed, downloading make take a minute — the jar files together
-      weigh in at 5 megabytes.</i>
+      The project is <a href="http://github.com/documentcloud/backbone/">hosted on GitHub</a>,
+      and the <a href="docs/backbone.html">annotated source code</a> is available,
+      as well as an online <a href="test/test.html">test suite</a>.
     </p>
 
-    <h2 id="configuration">Configuration</h2>
-
     <p>
-      Jammit uses the <b>config/assets.yml</b> YAML configuration file to define
-      packages and to set extra options. A package is an ordered set of directory glob
-      rules that will be expanded into a unique list of files. An example of
-      a complete <b>assets.yml</b> follows:
+      <i>
+        Backbone is an open-source component of
+        <a href="http://documentcloud.org/">DocumentCloud</a>.
+      </i>
     </p>
 
-<pre>
-embed_assets: on
-
-javascripts:
-  workspace:
-    - public/javascripts/vendor/jquery.js
-    - public/javascripts/lib/*.js
-    - public/javascripts/views/**/*.js
-    - app/views/workspace/*.jst
-
-stylesheets:
-  common:
-    - public/stylesheets/reset.css
-    - public/stylesheets/widgets/*.css
-  workspace:
-    - public/stylesheets/pages/workspace.css
-  empty:
-    - public/stylesheets/pages/empty.css</pre>
-
-    <p>
-      There are a number of extra configuration options that you may add to the
-      <b>assets.yml</b> configuration file to customize the way Jammit behaves.
-      Here's an <a href="http://gist.github.com/237848">example configuration file</a>
-      using all of the possible options. The meaning of the options and their
-      default values are listed below. Don't be bewildered by the length of the
-      list — none of the options are required, they just give you fine-grained
-      control over how your packages are generated.
-    </p>
+    <h2 id="downloads">
+      Downloads & Dependencies
+      <span style="padding-left: 7px; font-size:11px; font-weight: normal;" class="interface">(Right-click, and use "Save As")</span>
+    </h2>
 
     <table>
       <tr>
-        <td><b>package_assets</b></td>
-        <td><tt>on | off | always</tt></td>
-        <td class="definition">
-          Defaults to <b>on</b>, packaging and caching assets in every environment but development.
-          Never packages when <b>off</b>, always packages when <b>always</b>.
-        </td>
-      </tr>
-      <tr>
-        <td><b>embed_assets</b></td>
-        <td><tt>on | off | datauri</tt></td>
-        <td class="definition">
-          Defaults to <b>off</b>. When <b>on</b>, packages and caches Data-URI
-          and MTHML variants of your stylesheets, with whitelisted images
-          embedded inline. Using <b>datauri</b> serves embedded images only
-          to browsers that support Data-URIs, and serves unmodified stylesheets
-          to Internet Explorer 7 or lower.
-        </td>
-      </tr>
-      <tr>
-        <td><b>compress_assets</b></td>
-        <td><tt>on | off</tt></td>
-        <td class="definition">
-          Defaults to <b>on</b>. When <b>off</b>, JavaScript and CSS packages
-          will be left uncompressed (by YUI or Closure). Disabling compression is only recommended
-          if you're packaging assets in development.
-        </td>
-      </tr>
-      <tr>
-        <td><b>gzip_assets</b></td>
-        <td><tt>on | off</tt></td>
-        <td class="definition">
-          Defaults to <b>on</b>. When <b>off</b>, only the plain version of the
-          asset will be written out, not the <tt>.gz</tt> alternative. Disable this
-          if you don't plan on configuring your webserver to serve the static
-          gzip alternatives.
-        </td>
+        <td><a href="underscore.js">Development Version (0.1.0)</a></td>
+        <td><i>22kb, Uncompressed with Comments</i></td>
       </tr>
       <tr>
-        <td><b>javascript_compressor</b></td>
-        <td><tt>yui | closure</tt></td>
-        <td class="definition">
-          Defaults to <b>yui</b>. As of <b>0.2.0</b>, the Jammit gem can use either the
-          <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>
-          or the
-          <a href="http://code.google.com/closure/compiler/">Google Closure Compiler</a>
-          to compress your JavaScript.
-        </td>
-      </tr>
-      <tr>
-        <td><b>template_function</b></td>
-        <td><tt>on | off | ...</tt></td>
-        <td class="definition">
-          The JavaScript function that compiles your JavaScript templates (<b>JST</b>).
-          Defaults to <b>on</b>, which uses a bundled variant of
-          <a href="http://ejohn.org/blog/javascript-micro-templating/">Micro-Templating</a>.
-          Set it to <b>_.template</b> if you use
-          <a href="http://documentcloud.github.com/underscore/">Underscore.js</a>,
-          or <b>new Template</b> for
-          <a href="http://www.prototypejs.org/">Prototype</a>. Turn it <b>off</b>
-          to pass through the template strings unaltered.
-        </td>
-      </tr>
-      <tr>
-        <td><b>template_namespace</b></td>
-        <td><tt>...</tt></td>
-        <td class="definition">
-          By default, all of your compiled templates will be added to a top-level
-          <b>window.JST</b> object. If you'd like to add them instead to your
-          own JavaScript namespace, change it to the
-          object of your choice.
-        </td>
-      </tr>
-      <tr>
-        <td><b>template_extension</b></td>
-        <td><tt>...</tt></td>
-        <td class="definition">
-          By default, Jammit treats files with a <tt>jst</tt> extension as
-          JavaScript templates. If you'd prefer to use a different extension, like
-          <tt>html.mustache</tt>, set the <b>template_extension</b> option.
-        </td>
-      </tr>
-      <tr>
-        <td><b>package_path</b></td>
-        <td><tt>...</tt></td>
-        <td class="definition">
-          The URL at which packaged assets are cached and made available.
-          Defaults to <b>assets</b>, but if you already have an existing
-          AssetsController with a different purpose, you could change it to, say,
-          <b>packages</b>. <i>(Single directory names only, please.)</i>
-        </td>
-      </tr>
-      <tr>
-        <td><b>compressor_options</b></td>
-        <td><tt>...</tt></td>
-        <td class="definition">
-          Pass an options hash directly to the underlying JavaScript compressor
-          to configure it. See the
-          <a href="http://github.com/sstephenson/ruby-yui-compressor">ruby-yui-compressor</a> or
-          <a href="http://github.com/documentcloud/closure-compiler">closure-compiler</a>
-          gem documentation for the full list of available options.
-        </td>
-      </tr>
-      <tr>
-        <td><b>css_compressor_options</b></td>
-        <td><tt>...</tt></td>
-        <td class="definition">
-          Pass an options hash directly to the YUI CSS Compressor.
-          <a href="http://yui.rubyforge.org/classes/YUI/CssCompressor.html">Available options</a>
-          are <b>charset</b>, and <b>line_break</b>, which can be used to write
-          out each CSS rule on a separate line.
-        </td>
+        <td><a href="underscore-min.js">Production Version (0.1.0)</a></td>
+        <td><i>2kb, Packed and Gzipped</i></td>
       </tr>
     </table>
 
     <p>
-      The contents of <tt>assets.yml</tt> are passed through <b>ERB</b> before
-      being loaded, in case you find the need to configure Jammit
-      for different environments.
-    </p>
-
-    <p>
-      <i>Warning: In <b>Rails 3</b>, static assets are not served by default.
-      You either have to configure your webserver to serve static assets out
-      of</i> <tt>public</tt> <i>(recommended), or set</i>
-      <tt>config.serve_static_assets = true</tt>
-    </p>
-
-    <h2 id="usage">Usage</h2>
-
-    <p>
-      To access your packages in views, use the corresponding helper. The
-      helper methods can include multiple packages at once:
-    </p>
-
-    <pre>
-<%= include_stylesheets :common, :workspace, :media => 'all' %>
-<%= include_javascripts :workspace %></pre>
-
-    <p>
-      In development, no packaging is performed, so you'll see a list of individual
-      references to all of the JavaScript and CSS files. The <b>assets.yml</b>
-      configuration file is reloaded on every development request, so you can
-      change the contents of your packages without needing to restart Rails.
-      In all other environments, or if <b>package_assets</b> is set to "<b>always</b>",
-      you'll get tags for the merged packages.
+      Backbone's only hard dependency is
+      <a href="http://documentcloud.github.com/underscore/">Underscore.js</a>.
+      For RESTful persistence, and DOM manipulation with
+      <a href="#View">Backbone.View</a>,
+      it's highly recommended to include <a href="http://jquery.com">jQuery</a>,
+      and <a href="http://www.json.org/json2.js">json2.js</a>
+      (which you probably already have).
     </p>
 
-    <p>
-      It's recommended to keep the default behavior of unpackaged assets in
-      development, because it's so much easier to debug JavaScript that way.
-      But if you'd like to use fully packaged assets in development, while only rebuilding the packages whose
-      sources have changed between requests, use "<b>always</b>" and add the following
-      <b>before_filter</b> to your <b>ApplicationController</b> to keep your
-      packages fresh:
-    </p>
-
-<pre>before_filter { Jammit.packager.precache_all } if Rails.env.development?</pre>
-
-    <h2 id="compressors">YUI & Closure</h2>
+    <h2 id="Introduction">Introduction</h2>
 
     <p>
-      Jammit can be configured to use either the
-      <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a> or the
-      <a href="http://code.google.com/closure/compiler/">Google Closure Compiler</a>
-      to compress and optimize your JavaScript. (CSS is always run through the
-      YUI Compressor.) Specify the <b>javascript_compressor</b> to choose either <b>yui</b>
-      or <b>closure</b> backends. If left blank, Jammit defaults to <b>yui</b>.
+      The core idea behind Backbone is to avoid tying your data to the DOM. It's
+      too easy to create JavaScript applications that end up as tangled piles of
+      jQuery selectors and callbacks, all trying frantically to keep data in
+      sync between the UI, your JavaScript logic, and the database on your
+      server. For rich client-side applications, a more structured approach
+      is helpful.
     </p>
 
     <p>
-      You can configure the JavaScript compilation by adding <b>compressor_options</b>
-      to your <b>assets.yml</b>. The <b>compressor_options</b>
-      will be passed directly to the Gem backend of your chosen compressor. See the
-      <a href="http://github.com/sstephenson/ruby-yui-compressor">ruby-yui-compressor</a> or
-      <a href="http://github.com/documentcloud/closure-compiler">closure-compiler</a>
-      gem documentation for all the available options. For example, to configure
-      the Closure Compiler to use its
-      <a href="http://code.google.com/closure/compiler/docs/compilation_levels.html">advanced optimizations</a>,
-      you would add the <b>compilation_level</b>:
+      With Backbone, you represent your data as
+      <a href="#Model">Models</a>, which can be created, validated, destroyed,
+      and saved to the server. Whenever a UI action causes an attribute of
+      a model to change, the model triggers a <i>change</i> event, and all
+      the <a href="#View">Views</a> that are displaying the model's data are
+      notified, causing them to re-render. You don't have to write the glue 
+      code that looks into the DOM to find an element with a specific <i>id</i>,
+      and update the HTML contents 
+      — when the model changes, the views simply update themselves.
     </p>
-
-<pre>
-javascript_compressor: closure
-compressor_options:
-  compilation_level: "ADVANCED_OPTIMIZATIONS"
-</pre>
-
+    
     <p>
-      Jammit always uses the YUI CSS Compressor to compress CSS files. You can
-      <a href="http://yui.rubyforge.org/classes/YUI/CssCompressor.html">configure it</a>
-      by specifying the <b>css_compressor_options</b>, in <b>assets.yml</b>.
-    </p>
-
-    <p>
-      <i>
-        <b>Warning:</b> Google's Closure Compiler has been known to choke on certain
-        already pre-compressed JavaScripts, such as the production version of jQuery.
-        Using the uncompressed development version is recommended.
+      <i>How is this different than 
+        <a href="http://www.sproutcore.com/">SproutCore</a> or 
+        <a href="http://cappuccino.org/">Cappuccino</a>?
       </i>
     </p>
-
-    <h2 id="precaching">Precaching Assets</h2>
-
+    
     <p>
-      Installing the Jammit gem provides the optional but handy <tt>jammit</tt> command-line utility,
-      which can be hooked into your deployment process. The <tt>jammit</tt>
-      command reads in your configuration file, generates all of the defined
-      packages, and gzips them at the highest compression setting. In order to
-      serve these static gzipped versions, configure your <b>Nginx</b>
-      <a href="http://wiki.nginx.org/NginxHttpGzipStaticModule">http_gzip_static_module</a>,
-      or your <b>Apache</b>
-      <a href="http://httpd.apache.org/docs/2.0/content-negotiation.html">Content Negotiation MultiViews</a>.
-      It's also a good idea to have gzip compression turned on for the remainder
-      of your static assets, including any asset packages that aren't gzipped-in-advance.
-      Adding <b>Nginx</b>'s
-      <a href="http://wiki.nginx.org/NginxHttpGzipModule">http_gzip_module</a>
-      or <b>Apache</b>'s
-      <a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html">mod_deflate</a>
-      will do the trick.
+      This question is frequently asked, and all three projects apply general 
+      <a href="http://en.wikipedia.org/wiki/Model–View–Controller">Model-View-Controller</a>
+      principles to JavaScript applications. However, there isn't much basis
+      for comparsion. SproutCore and Cappuccino provide rich UI widgets, vast 
+      core libraries, and determine the structure of your HTML for you.
+      Loading the "Hello World" of SproutCore includes <i>2.5 megabytes</i> of JavaScript on the
+      page; the "Hello World" of Cappuccino includes <i>1.7 megabytes</i> of JS and images. 
+      Backbone is a mere <i>2 kilobyte</i> include that provides the core concepts of
+      models, events (key-value observing), collections, views, and persistence.
     </p>
 
-    <p>
-      The <tt>jammit</tt> command can be passed options to configure the
-      path to <b>assets.yml</b>, and the output directory in which all packages
-      are compiled. Run <tt>jammit --help</tt> to see all of the options. For
-      speedy builds, <tt>jammit</tt> will check the modification times of your packages
-      and source files: only the packages that have changed are rebuilt. If you'd
-      like to force all packages to build, use <tt>jammit --force</tt>.
-    </p>
-
-    <p>
-      In production, you'll want to run Jammit during deployment, somewhere
-      in between updating the source and symlinking to the new release. Whether you're
-      using <a href="http://www.capify.org/index.php/Capistrano">Capistrano</a>,
-      <a href="http://rubyhitsquad.com/Vlad_the_Deployer.html">Vlad</a>,
-      or just good 'ol <a href="http://rake.rubyforge.org/">Rake</a>,
-      it shouldn't be too hard to add a step that calls the <tt>jammit</tt> command.
-      For an example Jammit setup under Capistrano and Apache, see
-      <a href="http://afreshcup.com/home/2010/1/18/notes-on-using-jammit-with-rails.html">Mike Gunderloy's blog post</a>.
-    </p>
-
-    <h2 id="expires">Expires Headers</h2>
-
-    <p>
-      To get the fastest page load times for your regular visitors, it's recommended
-      to set the HTTP Expires header to a date far in the future. You don't need
-      to worry about clearing the cached assets when you deploy a new release,
-      because Rails will write out the asset's modification time as part of the URL,
-      causing browsers to fetch a fresh copy of the asset.
-    </p>
-
-    <p>
-      If you're using an <b>Nginx</b> webserver, add the following snippet to the
-      <br /><tt>server { ... }</tt> block for your application:
-    </p>
-
-    <pre>
-location ~ ^/assets/ {
-  passenger_enabled on;
-  expires max;
-}</pre>
-
-    <p>
-      If you're using <b>Apache</b>, make sure that
-      <a href="http://httpd.apache.org/docs/1.3/mod/mod_expires.html">mod_expires</a>
-      is enabled, and then add the following snippet to the
-      appropriate <b>VirtualHost</b> section of your configuration,
-      filling in the path to your deployed application:
-    </p>
-
-    <pre>
-ExpiresActive On
-<Directory "/path/to/public/assets">
-  ExpiresDefault "access plus 1 year"
-</Directory></pre>
-
-    <p>
-      If for any reason (multiple physical servers, rsync-only deploys) you don't
-      wish to rely on modification times for cache expiry, Jammit uses the
-      standard Rails helpers to generate URLs, and will respect
-      the <tt>RAILS_ASSET_ID</tt> environment variable.
-    </p>
-
-    <h2 id="embedding">Embedding Images ...</h2>
-
-    <p>
-      After you've finished concatenating and compressing your JavaScript and
-      CSS files into streamlined downloads, the slowest part of your page load
-      is probably the images. It's common to use image sprites to avoid the
-      avalanche of HTTP requests that are needed to load a bunch of small images.
-      Unfortunately, image sprites can be complicated to position (especially
-      with horizontal and vertical tiling), and a real pain to create and
-      maintain. With a little elbow grease from Jammit, your spriting woes can be a
-      thing of the past.
-    </p>
-
-    <p>
-      With <b>embed_assets</b> turned on, Jammit will inline image files directly
-      into your compiled CSS, using
-      <a href="http://en.wikipedia.org/wiki/Data_URI_scheme">Data-URIs</a> in
-      supported browsers, and
-      <a href="http://en.wikipedia.org/wiki/Mhtml">MHTML</a> in Internet Explorer 7 and below.
-      Instead of ten CSS files referencing 30 images, you can have a single,
-      packaged, minified, gzipped CSS file, with the images coming in all at
-      once instead of piecemeal, making just a single HTTP request.
-    </p>
+    <h2 id="Events">Backbone.Events</h2>
 
     <p>
-      Take a look at this example (especially on a slow connection or wifi):<br />
-      <a href="http://jashkenas.s3.amazonaws.com/misc/jammit_example/normal.html">Normal Image Loading</a> vs.
-      <a href="http://jashkenas.s3.amazonaws.com/misc/jammit_example/jammit.html">Jammit Image Embedding</a><br />
-    </p>
-
-    <p>
-      Embedded images can be a little tricky, which is why using them is strictly
-      on an opt-in basis. After enabling <b>embed_assets</b> in the configuration file,
-      you'll need to whitelist the images that you'd like to make embeddable.
-      When processing CSS, Jammit will only embed images that have
-      <b>.../embed/...</b> somewhere in their path — the other images will be
-      left untouched. You can make a single <b>public/images/embed</b> folder for
-      your embedded images, or organize them into directories however you
-      prefer. It's not recommended to embed all of your site's images, just
-      the ones that conform to the following three rules:
-    </p>
-
-    <ol>
-      <li>
-        <b>Images that are small.</b> Large images will simply delay the rendering
-        of your CSS. Jammit won't embed images larger than <b>32 kilobytes</b>, because
-        Internet Explorer 8 won't render them.
-      </li>
-      <li>
-        <b>Images that are immediately visible.</b> It's better to leave the
-        images that are hidden at page load time to download in the background.
-      </li>
-      <li>
-        <b>Images that are referenced by a single CSS rule.</b> Referencing the
-        same embedded image in multiple rules will cause that image's contents to be
-        embedded more than once, defeating the purpose. Replace the duplicated
-        rules with an image-specific HTML class, and you're good to go.
-      </li>
-    </ol>
-
-    <p>
-      A final <b>cautionary note</b>. Internet Explorer's implementation of MHTML
-      requires the use of absolute paths in image references. This means that
-      the timestamp that Rails appends to the stylesheet URL (to allow
-      far-future expires headers) needs to also be in the contents of the
-      stylesheet. If a process on your webserver changes the modification time
-      of the cached MHTML stylesheet, it will break the image references. To fix
-      it, use the <tt>jammit</tt> command (with <tt>--base-url</tt>) to rebuild your assets, or simply delete
-      the cached file, and let Jammit automatically rebuild the file on the next
-      request.
-    </p>
-
-    <p>
-      If the MHTML stylesheets sound too fragile, or if you encounter any problems
-      with them in Internet Explorer (such as mixed-mode warnings when serving
-      MHTML through SSL), we recommend setting <b>embed_assets</b> to "<b>datauri</b>".
-      Using "<b>datauri</b>" will cause Internet Explorer 7 and below to receive
-      plain versions of the packaged stylesheets, while all other browsers get the
-      Data-URI flavor.
-    </p>
-
-    <h3>... and Embedding Fonts</h3>
-
-    <p>
-      Embedded fonts work in largely the same way as images, <b>TTF</b> and <b>OTF</b> files
-      that are whitelisted within an "embed" folder will be inlined as Data-URIs.
-      There is no MHTML variant for fonts, because Internet Explorer only supports
-      unembeddable <b>EOT</b> files. Embedding is especially important
-      for fonts in general, because it helps avoid
-      <a href="http://paulirish.com/2009/fighting-the-font-face-fout/">the flash of unstyled text</a>
-      that the browser would otherwise display while waiting for the font to
-      download. If you're looking to get started with web fonts,
-      <a href="http://www.fontsquirrel.com/fontface/generator">FontSquirrel has a great tool</a>
-      that can generate the proper fonts and styles you'll need. Here's an example
-      of a CSS rule that would activate the proper Jammit embedding:
-    </p>
-
-<pre>
- at font-face {
-  font-family: 'DroidSans';
-  src: url(/fonts/DroidSans.eot);
-  src: local('Droid Sans'), local('DroidSans'), url(/fonts/embed/DroidSans.ttf) format('truetype');
-}</pre>
-
-    <h2 id="jst">JavaScript Templates</h2>
-
-    <p>
-      If you're using enough JavaScript to want it compressed and concatenated,
-      you're probably using it to generate at least a little of your
-      HTML. Traditionally, this has been accomplished by joining together strings
-      and inserting them into the DOM. A far more agreeable way to generate HTML
-      on the client is to use JavaScript templates (referred to here as <b>JST</b>).
-    </p>
-
-    <p>
-      Jammit helps keep your JavaScript views organized alongside your Rails
-      views, bundling them together into packages, and providing them pre-compiled
-      for your client-side code to evaluate. If left unspecified, Jammit uses a variant of
-      <a href="http://ejohn.org/blog/javascript-micro-templating/">John Resig's Micro Templating</a>
-      to compile the templates, but you can choose your preferred JavaScript templating engine
-      of your choosing by setting the <b>template_function</b> in <b>assets.yml</b>.
-      Jammit will run all of your templates through the function, and assign
-      each one by filename to a top-level <b>JST</b> object. For example, the following
-      template, <b>app/views/drivers/license.jst</b>:
-    </p>
-
-<pre>
-<div class="drivers-license">
-  <h2>Name: <%= name %></h2>
-  <em>Hometown: <%= birthplace %></em>
-  <div class="biography">
-    <%= bio %>
-  </div>
-</div></pre>
-
-    <p>
-      Including this template within a JavaScript asset package makes it
-      available within the browser as the <b>JST.license</b> function.
-    </p>
-
-<pre>
-JST.license({name : "Moe", birthplace : "Brooklyn", bio : "Moe was always..."});</pre>
-
-    <p>
-      Since <b>0.5.0</b>, templates should be included in the appropriate
-      <tt>javascripts</tt> package. Here's an example of an <tt>assets.yml</tt>
-      that uses templates, and shows the location at which they'll be available
-      on the client. When including templates from different directories, the
-      common prefix is ignored, and the rest of the path becomes the name of the
-      template:
+      <b>Events</b> is a module that can be mixed in to any object, giving the
+      object the ability to bind and trigger custom events. For example:
     </p>
 
 <pre>
@@ -715,31 +289,6 @@ javascripts:
     - app/views/common/dialog.jst
     - app/views/common/menu.jst</pre>
 
-    <p>
-      Then, from your JavaScript:
-    </p>
-
-<pre>
-JST['accounts/badge']
-JST['common/dialog']
-JST['common/menu']</pre>
-
-    <p>
-      To use <a href="http://documentcloud.github.com/underscore/">Underscore.js</a>
-      templates, set <b>template_function</b> to "<b>_.template</b>".<br />
-      To use <a href="http://www.prototypejs.org/">Prototype</a> templates, set
-      it to "<b>new Template</b>".<br />To use
-      <a href="http://github.com/janl/mustache.js">Mustache.js</a> templates,
-      you'll need
-      <a href="http://gist.github.com/234982">a little extra setup</a>.
-    </p>
-
-    <p>
-      The default extension for template files is <tt>jst</tt>,
-      but you can set <b>template_extension</b> in your <tt>assets.yml</tt> if you're
-      using an engine with a preferred extension, such as <tt>html.mustache</tt>
-    </p>
-
     <h2 id="changes">Change Log</h2>
 
     <p>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/backbone.git



More information about the Pkg-javascript-commits mailing list