This is a very useful post -- unfortunately, it describes an all too common occurrence: treating a single example as gospel truth. I've gone ahead and added an explicit "There's More Than One Way To Do It" section to the FAQ.<p><a href="http://documentcloud.github.com/backbone/#FAQ-tim-toady" rel="nofollow">http://documentcloud.github.com/backbone/#FAQ-tim-toady</a><p><i>Edit</i>: Also, for folks looking for useful patterns, I'd recommend scrolling through and viewing source on a few of the increasingly lengthy list of example apps:<p><a href="http://documentcloud.github.com/backbone/#examples" rel="nofollow">http://documentcloud.github.com/backbone/#examples</a><p>Pandora, Trajectory, and SeatGeek were added recently, and there are more that are waiting for a blurb, including Sky+ and GroupOn:<p><a href="http://skyplustv.sky.com/tv-guide" rel="nofollow">http://skyplustv.sky.com/tv-guide</a><p><a href="http://www.groupon.com/now" rel="nofollow">http://www.groupon.com/now</a>
'Collections should keep track of their views' seems badly explained. You're not keeping references to views on a collection, you're keeping a reference to subviews inside a view that uses a collection. The code is correct, and agnostic to whether the collection is local to the view, or a shared collection.
Just like to add that Jashkenas has updated the Todo example code that this article refers to (3 hrs ago at the time of this comment).<p>The link in this article in the first section "Models should not know about Views" should link instead to <a href="http://bit.ly/pfnFYu" rel="nofollow">http://bit.ly/pfnFYu</a><p>(gotten from the github history)
After studying backbone and other such Javascript MVC frameworks, I realized that they are not necessary.<p>JS has a wonderful MVC architecture built-in. all JS objects are models by defaults, all views (HTML elements) are models too, and JQuery has a lot of helper functions to simplify events.<p>These frameworks give you a good idea of how to organize your code better and help you standardize implementation, but if you know what you are doing, you can do it anyways.<p>Edit: typo