Rufe einen Controller von einem anderen auf
Ich bin ein absoluter Neuling in AngularJs, bitte haben Sie etwas Geduld mit mir.
Ich habe die folgende eckige App, die zwei Controller enthält
(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;
});
}
})();
mymachinesController
soll ein @ aufrufGET
Funktion mit Parametern. Hier sind die Parameter 2015-09-14 und die zweite ist 2015-09-16 (für den Moment sind sie fest codiert).
Was ich erreichen möchte ist, dass ich auf meiner Hauptseite zwei Eingabesteuerelemente habe, die @ auslös$scope.change
-Funktion (befindet sich am unteren Rand des erstenmainController
). Hier möchte ich Werte von @ übergebdate_from
unddate_to
auf die GET-Funktion, damit ich bestimmte Werte abrufen kann.
Was ich tun kann (am Ende, wenn nichts funktioniert), ist die Ode von @ zu kopiermachinesController
in meinmainController
und das würde das Problem lösen.
Jedoch möchte ich lernen, wie man ein bisschen besser damit umgeht, deshalb möchte ich lernen, wie man es richtig macht (in diesem Fall ruft man ein Modul vom anderen auf).
Was muss ich ändern, um dies zu erreichen?
BEARBEITE:
Der Grund, warum ich machinesController habe, ist, wie bereits erwähnt, die json-Daten herunterzuladen und dem Benutzer anzuzeigen. Also am Ende in meinem HTML-Code habe ich Folgendes:
,<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>
Welche eine Tabelle mit Computernamen anzeigt.