Deploying and managing $watch types efficiently
The beast behind AngularJS's data binding is its dirty checking and the overhead that comes along with it. As you tease apart your application's innards, you will find that even the most elegantly architected applications incur a substantial amount of dirty checking. This, of course, is normal, and the framework is architected as to be able to handle the hugely variable loads of dirty checking that different sorts of applications might throw at it. Nevertheless, the nature of object comparison performance at scale (hint—it is slow) requires that dirty checking is minimally deployed, efficiently organized, and appropriately targeted. Even with the rigorous engineering and optimization behind AngularJS's dirty checking, it remains the case that it is still deceptively easy to bog down an application's performance with superfluous data comparison. In the same way that a single uncooperative person backpaddling in a canoe can bring a vessel to...