The thing to keep in mind with MVC is that it's intended to promote a "separation of concerns" that keeps your code relatively clean and untangled. In my experience there is not necessarily a "right" answer to many MVC questions, especially in JavaScript.
I've worked on a few big HTML/JavaScript applications, and I've had the most luck with this approach:
- "Model" objects that hold data and enforce some degree of business logic. This may involve some logic to sync changes to and from the server.
- "View" components that can easily be updated from the client. For example, custom jQuery controls that encapsulate different UI elements, wich as little business logic as possible.
- Perhaps an event mechanism by which the model notifies the rest of the system of changes to the underlying data. This is mainly to avoid having the model worry about how the data is used.
- A "Controller" that mutates the model in response to user actions.
Generally all the ugly code winds up in the controller, which is fine. At least the rest of the system is organized in a modular and understandable way. :) In the end, it's all about managing complexity.