私はAngularJsの初心者ですから、私には忍耐力を持ってください。別のコントローラーから1台のコントローラーを呼び出す
私は2つのコントローラ
(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;
});
}
})();
が含まれている以下の角度のアプリは、私のmachinesController
はパラメータでGET
関数を呼び出すことになっています。ここではパラメータは2015-09-14であり、2番目のパラメータは2015-09-16です(現在はハードコードされています)。
私は何を達成したいことは、私は(最初mainController
の下部にある)$scope.change
機能をトリガ私のメインページ上の2つの入力コントロールを持っていること、です。ここでは、特定の値を取得できるように、date_from
とdate_to
の値をGET関数に渡したいと思います。
最後に何も問題がなければ、machinesController
のodeをmainController
にコピーして問題を解決します。
しかし、私はこれをより良く使う方法を学びたいので、適切な方法(この場合、あるモジュールを他のモジュールから呼び出す方法)を学びたいと思います。
これを達成するために何を変更する必要がありますか?
EDIT:
私はmachinesControllerはJSONデータをdonwloadし、ユーザーにそれを表示するには、言及されたように、ある持っている理由。私のHTMLコードの最後には、次のようなものがあります。
<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>
マシン名を持つ表が表示されます。
2番目のコントローラを使用する理由はありますか? –
コントローラがデータのダウンロードを行います。これは '$ http'をそれに注入する必要があることを意味します。それとも私はしないの? –
それでは、サービスを行うべきです。 :) –