2013-12-12 117 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。 ?COM/API /分類/菜單回調= JSON_CALLBACK') \t .success(功能(數據){ \t \t $ scope.categories = data.categories; \t});} ) – juan

+1

每次我遇到的這一點,是因爲我的聽衆/觀衆多次發起請求。重組邏輯,應該很好。用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

我都面臨着這個問題,你可以這樣解決:

  • 檢查,如果您已聲明NG-控制器兩次,你需要聲明它只是一個時間
  • 檢查是否已聲明的數據-NG-點擊,如果是的話,你需要替換它NG單擊

就是這樣

+0

我幾乎要瘋了,因爲某一部分的所有內容都在做出雙重和重複的請求,謝謝你建議我檢查我是否已經將控制器聲明瞭兩次。 – Nifled