Несколько операций $ http.get и сохранение информации в одной переменной $ scope - PullRequest
0 голосов
/ 17 мая 2018

Мне нужно сделать четыре вызова $ http.get, и мне нужно отправить возвращенную переменную $ scope в один HTML, чтобы напечатать всю информацию.На данный момент у меня есть следующий код в JS:

(function (ng) {

var mod = ng.module("serviciosAdminModule");

mod.controller('serviciosAdminCtrl', ['$scope', '$http',
    function ($scope, $http) {
        $http.get("api/hoteles").then(function (response) {
            $scope.serviciosHotelesRecords = response.data;
        });
    }]);
mod.controller('serviciosAdminCtrl', ['$scope', '$http',
    function ($scope, $http) {
        $http.get("api/paseos").then(function (response) {
            $scope.serviciosPaseosRecords = response.data;
        });
    }]);
mod.controller('serviciosAdminCtrl', ['$scope', '$http',
    function ($scope, $http) {
        $http.get("api/aseos").then(function (response) {
            $scope.serviciosAseosRecords = response.data;
        });
    }]);
mod.controller('serviciosAdminCtrl', ['$scope', '$http',
    function ($scope, $http) {
        $http.get("api/entrenamientos").then(function (response) {
            $scope.serviciosEntrenamientosRecords = response.data;
        });
    }]);

}) (window.angular);

В HTML у меня есть следующее:

<tr ng-repeat="servicio in serviciosAdminRecords">
    <td id="{{$index}}-id" class="parrafoscards" style="font-size: 16px">
        <a ui-sref="servicioAdminDetail({servicioId: servicio.id})">{{servicio.id}}</a>
    </td>...

В HTML я запрашиваю serviciosAdminRecords, который является переменной $ scope, в которую я хочу поместить все данные .get

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Если ваш response.data является массивом объектов, то инициализируйте serviciosPaseosRecords как массив.

$scope.serviciosHotelesRecords = [];

вместо назначения response.data для serviciosPaseosRecords

 $scope.serviciosAseosRecords = response.data

Concat response.data с существующим массивом serviciosAseosRecords.

$scope.serviciosAseosRecords = $scope.serviciosAseosRecords.concat(response.data)
0 голосов
/ 17 мая 2018

Возможно, вам нужно объединить обещания, чтобы сложить все ответы в один массив.Избавьтесь от всех различных контроллеров - у них будут отдельные области действия - и просто используйте один контроллер, убедившись, что он используется в представлении, используя ng-controller='serviciosAdminCtrl' в качестве атрибута в вашем представлении.

mod.controller('serviciosAdminCtrl', ['$scope', '$http',
    function ($scope, $http) {
        $scope.serviciosAseosRecords = [];
        $http.get("api/hoteles").then(function (response) {
            $scope.serviciosAseosRecords = $scope.serviciosAseosRecords.concat(response.data);
            $http.get("api/paseos").then(function (response) {
                $scope.serviciosAseosRecords = $scope.serviciosAseosRecords.concat(response.data);
                $http.get("api/aseos").then(function (response) {
                    $scope.serviciosAseosRecords = $scope.serviciosAseosRecords.concat(response.data);
                    $http.get("api/entrenamientos").then(function (response) {
                        $scope.serviciosAseosRecords = $scope.serviciosAseosRecords.concat(response.data);
                    });
                });
            });
        });
    }]);
...