I've noticed that for the most part, all the examples on CanJs.com dance around binding to objects within controller initialization. It appears as though there is automated handling of binding teardowns, but for the most part it's not really clear how that happens, or when it should manually be taken care of.
Is there any reason to avoid binding to objects during controller initialization? Is it preferred to pass all objects within the constructor and to do all bindings using the "{foo} changed": syntax?
What is the difference between can.Controller.prototype.bind and can.bind? Should we be using proxy over bind to set context for the callback function? Should we be explicitly unbinding all manual bindings during destroy? Does can.Map have an equivalent of destroy? And how does namespacing events fall into all of this?
Sorry for all the questions! I'm just really confused right now, especially after digging into the codebase, as to what is and is not automated regarding teardowns, and what are the best practices. Thanks!