Regarding the query about Calling a method in a directive controller from another controller.
Is there a way to have multiple separate directives of the same type on a page? Since they share a common API (singleton), the state is also shared. Therefore, if I were to include two identical directives, they would both access one instance of the API and thereby have the same state.