Angularjs ajax вызывается несколько раз при переключении представлений с помощью $ routeProvider

Я получаю несколько вызовов одного и того же вызова функции ajax, когда переключаю представления из навигации. Скажем, я нахожусь в Residents.html, ajax срабатывает только один раз (обычно). ЗАПИСЬ localhost: 64752 / api / Residents / GetResidents

Теперь, если я перейду к Home.html и вернусь к Residnets.html на каждый щелчок навигации, он срабатывает дважды. локальный: 64752 / api / Residents / GetResidents localhost: 64752 / api / Residents / GetResidents

Теперь, если я снова перейду к Home.html и вернусь к Residents.html, он сработает 3 раза. локальный: 64752 / api / Residents / GetResidents localhost: 64752 / api / Residents / GetResidents localhost: 64752 / api / Residents / GetResidents

Чем больше вы переходите со страницы на страницу, тем больше звонков. Представления или страницы .html не содержат контроллер ng-controller, так что это ясно.

Все вызовы ajax поступают для контроллеров, и у меня есть некоторые директивы, которые я создал, которые также используют вызовы ajax.

// app.js var app = angular.module («квартира», [«ngRoute», «ngResource», «apartment.homeController», «apartment.apartmentsController», «apartment.residentsController», «ngResource»]);

// Config...
app.config(function ($routeProvider) { 

    $routeProvider
       .when("/", {
           templateUrl: "View/home.html",
           controller: "homeController",
       })
        .when("/residents", {
            templateUrl: "View/residents.html",
            controller: "residentsController"
        })
        .when("/rooms", {
            templateUrl: "View/rooms.html",
            controller: "apartmentsController"
        })
        .otherwise({
            template: "does not exists"
        });
});

// Контроллер резидентов (function () {

'use strict';

var app = angular.module('apartment.residentsController', ['ngResource', 'appartment.services', 'ngMaterial']);

app.controller('residentsController', function ($scope, $resource, $http, apartmentService) {

    $scope.getResidents = function () {            

        var req = {
                method: 'POST',
                url: url + '/GetResidents',
                header: { 'Content-Type': 'application/json' },
                data: JSON.stringify({
                    page: $scope.page,
                    pageSize: $scope.pageSize,
                    sort: $scope.sort,
                    filter: $scope.filter,
                    orderby: $scope.orderby
                })
        };

        $scope.loading = true;
        $http(req).then(
            function (data) {
                $scope.showClientTable = true;
                $scope.residents = data.data.result;                    
                $scope.totalPages = data.data.pages;
                $scope.loading = false;
            },
            function (data) {
                console.log(data.error);
                $scope.loading = false;
            }
        );
    }

});//end controller

} ()); // конец вложения


person vou xiong    schedule 11.02.2016    source источник


Ответы (1)


Я нашел проблему. Я использовал множество директив, которые выполняли вызовы ajax. По какой-то странной причине это могло бы вызвать множественные вызовы ajax при переходе от страницы к странице и обратно через $ routesprovider в ajax. Поэтому я удалил вызов ajax из директив и поместил их в функции.

person vou xiong    schedule 11.02.2016