The pain I've felt with Angular has been less about Angular itself and more about the way it integrates with the backend frameworks I've seen it used with. If the backend has a clean RESTful API, then Angular is not so painful. If the backend has a complicated structure, then I find myself wasting epic amounts of time trying to find templates, paths, etc.
Angular will make a lot of calls to the backend, but in general you can not look at your Angular code and figure out where all the calls are going to the backend. Complex URLs are often assembled from diverse variables that are stored in varied locations. You can not grep for an URL because it does not exist as a string. There is no equivalent to the "rake routes" command -- no way to find out what routes Angular might use. I found myself opening the dev console on FireFox and watching what Ajax commands were issued while the pages loaded and operated -- which is a fine way to track down a call that is working, but if a call isn't working, then it won't show up in the dev console, and you are left trying to track it down.
There might be some structure or conventions that would allow us to find the problem when facing a bug in our Angular code, but so far we have not found it.
No, really, REST API services in Angular usually have path to endpoint written in the most top part of code (especially in $resource). So I really wonder how it's possible to hide API endpoint URI there.
Angular will make a lot of calls to the backend, but in general you can not look at your Angular code and figure out where all the calls are going to the backend. Complex URLs are often assembled from diverse variables that are stored in varied locations. You can not grep for an URL because it does not exist as a string. There is no equivalent to the "rake routes" command -- no way to find out what routes Angular might use. I found myself opening the dev console on FireFox and watching what Ajax commands were issued while the pages loaded and operated -- which is a fine way to track down a call that is working, but if a call isn't working, then it won't show up in the dev console, and you are left trying to track it down.
There might be some structure or conventions that would allow us to find the problem when facing a bug in our Angular code, but so far we have not found it.