2013-12-12 3 views
3

Я занимаюсь некоторыми интерфейсами с AngularJS и наблюдаю за консолью Chrome. Я обнаруживаю, что каждый HTTP-запрос к API, который он делает для дублирования. Есть ли способ избежать этого?AngularJS дублирует HTTP-запросы

Это мой упрощенный код

$http.jsonp('http://APIURL.com/api/category/menu?callback=JSON_CALLBACK').success(function(data){ 
    $scope.categories=data.categories; 
}); 

Полный код:

var kbControllers = angular.module('kbControllers', []); 
kbControllers.controller("KBHomeController", function ($scope, $http, $rootScope) { 
    $rootScope.header = 'Title of page'; 
    $http.jsonp('apicall.com/api/category/menu?callback=JSON_CALLBACK').success(function (data) { 
     $scope.categories = data.categories; 
    }); 
}); 

и это моя консоль enter image description here

любая мысль?

+2

Я подозреваю, что логика, называющая API, - это то, что на самом деле срабатывает дважды. Можете ли вы поделиться этим кодом? – Fourth

+0

var kbControllers = angular.module ('kbControllers', []); kbControllers.controller ("KBHomeController", функция ($ сфера, $ HTTP, $ rootScope) { \t $ rootScope.header = 'Заголовок страницы'; \t $ http.jsonp ('HTTP: // apicall. ? ком/API/категория/меню обратного вызова = JSON_CALLBACK ') \t .success (функция (данные) { \t \t $ scope.categories = data.categories; \t});} ) – juan

+1

Everytime я сталкиваюсь это это потому, что мои слушатели/наблюдатели увольняют запрос несколько раз. Реорганизовать логику и быть хорошим. Проследите через свой код с помощью console.log. –

ответ

-1

Это app.js

var app = angular.module('app', [ 
    'ngRoute','kbControllers', 'kbFilters', 'kbDirectives', 'angularytics', 'kbServices' 
]).config(['$routeProvider', function($routeProvider) { 
$routeProvider 
    .when('/', 
     { 
      templateUrl: '/assets/angular/kb/partials/home.html', 
      controller: 'KBHomeController' 
     } 
    ).when('/category/:category', 
     { 
      templateUrl: '/assets/angular/kb/partials/category.html', 
      controller: 'KBCategoryController' 
     } 
    ) 
    .otherwise({redirectTo:"/"}); 
    } 
]) 

И controllers.js

var kbControllers = angular.module('kbControllers', []); 

kbControllers.controller("KBHomeController", function ($scope, $http, $rootScope, Menu) { 
$rootScope.header = 'Atención al cliente - Movistar Argentina'; 

    $http.jsonp('http://APIURL.com/api/category/menu?callback=JSON_CALLBACK').success(function(data){ 
    $scope.categories=data.categories; 
    }); 
}) 

и мой взгляд /partials/home.html

[...] 
<li ng-repeat="category in categories"><a href="#/category/{{category.path}}"><i class="{{category.icon}}"></i><span>{{category.name}}</span></a></li> 
[...] 
+0

кажется что-то с jsonp, потому что переход на $ http.get отлично работает. – juan

2

я столкнулась с этой проблемой, и вы можете решить это следующим образом:

  • чека, если вы объявили нг-контроллер в два раза, вы должны объявить его только один раз чек
  • если вы объявили данные нг-клик, если да, то вы должны заменить его на нг нажмите

вот оно

+0

Я почти сходил с ума, потому что все на одной секции делало двойные и повторяющиеся запросы, спасибо за то, что вы посоветовали мне проверить, объявил ли я контроллер дважды. – Nifled

Смежные вопросы