(plunkr)
So this is probably more than you asked for, but given this is a common theme, especially for beginners, I thought I'd offer a simplified response (one of many variations).  I do not intend to make this is a long winded tutorial but rather only a summary. The intention is to point you in the right direction and urge you go at it independently. The solution focuses on using Angular directives, a powerful pattern offered in Angular 1.X (further evolved in AJS 2.X). In this example I have 2 directives 'cf-get-data-button' and 'cf-show-data', where the former acts like your drop-down selection (getData()) and the latter acts as your table where its contents get updated as a result (simulated as latest UTC time). I have also used two more important patterns: 1. a 'factory' pattern where a singleton service is implemented and where your ajax API reside and 'injected' into the directives and thus made available to them and 2. async promises returned from ajax calls, both of which you indirectly touch on in your question. I won't go into the details for those either, so you can ignore for now, but I suggest you visit these if you haven't done so already. Note, in this example, the result of the simulated AJAX call ($timeout) is available only after the promise is returned. 
At the end, you need one outer controller for your 'page' normally in keeping with AJS' quasi MVC world-view.  However, each directive provides its own 'controller' which aligns with the componentization and separation of concerns you are looking for.  The service (as a singleton) serves as the 'lynchpin' for the data, and as such, since both directives have access to it (via injection), they can request and/or consume that data, i.e. the simulated dropdown directive asks for data and the simulated table directive displays it (again,UTC time is shown). Note, directives can be customized in various ways and the ones I've included are some of the simplest.
You can start with index.html (below--note the 2 directives inside the body and the linked js scripts) and take it from there.  I have added comments inside the js and html files, BTW.  Feel free to ask if you have questions.
<!DOCTYPE html>
<html ng-app="Tutorial">
  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <script data-require="[email protected]" src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9"></script>
    <script src=app.js></script>  
    <script src=mock_ajax_service.js></script>
    <script src=getdatabuttondirective.js></script>  
    <script src=showdatadirective.js></script>
  </head>
  <body ng-controller="TutorialController">
    <p>One UI directive triggers update on another UI directive</p>
    <cf-get-data-button></cf-get-data-button>
    <br>
    <cf-show-data></cf-show-data>
  </body>
</html>