Exploring the wisdom found in the AngularJS documentation :
Referencing this particular chapter:
Diving Into Directives
Directives serve as markers on a DOM element, be it an attribute, element name, comment, or CSS class. It signals AngularJS's HTML compiler ($compile) to imbue a specific behavior onto said DOM element or even metamorphose the DOM element and its offspring.
As discussed in another chapter:
Controllers come into play for:
Controllers are not meant for the following:
Manipulating DOM — Controllers ought to encompass solely business logic. Injecting presentation logic into Controllers severely impedes testability. Angular offers databinding for most scenarios and directives for encapsulating manual DOM manipulation.
Formatting input — Opt for angular form controls instead.
Filtering output — Rely on angular filters instead.
Sharing code or state across controllers — Utilize angular services instead.
Overseeing the life-cycle of other components (e.g., creating service instances).
You're almost there, just scratching the surface.
An intriguing aspect is that due to AngularJS functioning atop Html pages and js code exclusively (contrary to conventional client/server setups), the view and "backend," typically supported by servers, coexist within the same document. The directive, designed to manipulate the DOM, plays a pivotal role in bootstrapping the application. Consequently, the temptation may arise to hardcode the application directly therein. This inclination is already reflected in the framework: specific directives cater to controllers.
In the MVC architecture, the controller serves as a liaison between views and models, consolidating functionalities revolving around a set of models and their data. It delineates pure UI aspects from business logic, ensuring that modifying your UI doesn't impact said logic unless new functionalities are being introduced. Nevertheless, these patterns intersect due to platform limitations.
The final verdict probably hinges on this notion: sans the built-in controller modules and directives, crafting new directives to bind UI entry points to business logic would become imperative. In doing so, one might end up creating objects adhering to the controller pattern to underpin code behind these entry points.
AngularJS streamlines this process for you, providing a ready-made solution.
Or perhaps pondering an alternative route?