Invocar un controlador de otro

Soy un novato en AngularJs, así que ten paciencia conmigo.

Tengo la siguiente aplicación angular, que contiene dos controladores

(function () {
    angular.module("app-machines", ['ngFlatDatepicker'])
    .controller('mainController', ['$scope', mainController])
    .controller("machinesController", machinesController);;

    function mainController($scope) {
        $scope.datepickerConfig_From = {
            allowFuture: true,
            dateFormat: 'DD.MM.YYYY',
            minDate: moment.utc('2015-09-13'),
            maxDate: moment.utc('2015-09-17')
        };

        $scope.datepickerConfig_To = {
            allowFuture: true,
            dateFormat: 'DD.MM.YYYY',
            minDate: moment.utc('2015-09-13'),
            maxDate: moment.utc('2015-09-17')
        };

        $scope.date_from = "14.09.2015";
        $scope.date_to = "15.09.2015";

        $scope.change = function () {
            //somehow execute machinesController get function
        };

    }

    function machinesController($http) {
        var vm = this;
        vm.errorMessage = "";
        vm.machines = [];

        $http.get("/api/machine/2015-09-14_2015-09-16")
        .then(function (response) {
            //success
            angular.copy(response.data, vm.machines);
        }, function (error) {
            //failure
            vm.errorMessage = "Failed to load data:" + error;
        });

    }
})();

mimachinesController se supone que llama a unGET funcionar con parámetros. Aquí los parámetros son 2015-09-14 y el segundo es 2015-09-16 (por ahora están codificados).

Lo que me gustaría lograr es que tengo dos controles de entrada en mi página principal, que activan$scope.change función (ubicada en la parte inferior de la primeramainController) Aquí me gustaría pasar valores dedate_from ydate_to a la función GET, para que pueda recuperar ciertos valores.

Lo que puedo hacer (al final, si nada funciona) es copiar la oda demachinesController en mimainController y eso resolvería el problema.

Sin embargo, me gustaría aprender a trabajar con esto un poco mejor, por lo tanto, me gustaría aprender cómo hacerlo de la manera adecuada (en este caso, llamar a un módulo desde el otro).

¿Qué necesito cambiar para lograr esto?

EDITAR:

La razón por la que tengo machinesController es, como se mencionó, para descargar los datos json y mostrárselos al usuario. Así que al final en mi código html tengo lo siguiente:

    ,<div ng-controller="machinesController as vm" class="col-md-6 col-md-offset-3">
        <div class="text-danger" ng-show="vm.errorMessage"> {{ vm.errorMessage }}</div>
        <table class="table table-responsive table-striped">
            <tr ng-repeat="machine in vm.machines">
                <td> {{ machine.name }}</td>
            </tr>
        </table>
    </div>

Que muestra una tabla con nombres de máquinas.

Respuestas a la pregunta(3)

Su respuesta a la pregunta