Do not look at controllers in terms of "operations" such as CRUD, in this case yu "talk to a soothing API", since soothing services use HTTP verbs to display CRUD operations, for example:
PUT, POST -> Create GET -> Read POST -> Update DELETE -> Delete
It is good practice to create angular services and return the $ resource for later use, mapping the $ resource to your CRUD endpoints as follows:
angular.module('app').factory('Users', ['$resource', function($resource) { return $resource('users', {}, { update: { method: 'PUT' }, deleteMember: { method: 'DELETE', url:'team/member/:userId/:teamId' }, addMember: { method: 'POST', url:'team/member' }, addTeam: { method: 'POST', url:'team' }, deleteTeam: { method: 'DELETE', url: 'team/:teamId' }, getTeam: { method: 'GET', url: 'team/:teamId' }, teams: { method: 'GET', url: 'team/list/:orgId' } }); } ]);
you can reuse this service and implement it in any other service or controller, the better your controllers.
in case you want to change the user interface, since angular is declarative and not mandatory, it is not recommended to change the dom from the controllers, you will need to create directives, again directives can be reused across your entire system.
Stick to thin controllers, create services and directives, and you're good to go, and finally, I would recommend that you use yoman as a workflow and use cg-angular , it implements "best practices" for many things, including the folder structure of the application, which is very It is important to understand this from the very beginning.