- Have the possibility of {{ and }} in your server-side output (or whatever symbols you configured Angular for)
- Have Angular.JS on a page with server-side output
Choose one.
It's important to realize that this affects things like user input as well. So form initials/form defaults can also be affected by this issue!
A bit of a silly way to fix this problem is to modify your server-side escaping function (surely you have this!) to "escape" {{ with {<zero-width space>{. This will mess up things that need to be equal to each other, and can poison user input (because of form initials) but will protect you from this issue.
{ or the human friendlier one &rcurb (?)
As to why this works this way, consider the following:
do you have to do HTML entity decoding when getting an input value from Javascript?
This isn't to say they've fixed anything else yet (I haven't looked), but it may mitigate the efforts of the lazy (like me in this instance).