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.