Мне нравится подход при котором приложение структурируется по фичам. Я бы добавил к вашей архитектуре app/common, где будут храниться общие для компонентов сервисы, директивы и т.д в папках с такими же именами(services, directives)
Например создать объект с помощью new function, сохранить ссылку в переменной на сам объект и обращаться из метода к объекту не через this, а через эту переменную:
var deepThought = new function() {
var self = this;
this.answer = 42;
this.alertAnswer = function() {
alert(self.answer);
};
}