json – AngularJS在控制器中多次调用HTTP

前端之家收集整理的这篇文章主要介绍了json – AngularJS在控制器中多次调用HTTP前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在用Angular开发一个页面,并在我的控制器中有一个init()方法.代码如下:
var filtersController = ['$scope','$http',function ($scope,$http) {
    $scope.init = function () {
        $http({
            method: 'GET',url: '/json-tags-test',cache: true
        }).success(function (data,status,headers,config) {
                // this callback will be called asynchronously
                // when the response is available
        }).error(function (data,config) {
            // called asynchronously if an error occurs
            // or server returns response with an error status.
        });
   };
}];

它只是调用一个简单的JSON文件.

我的HTML如下:

<div class="container main-frame" ng-app="projectsApp" ng-controller="filtersController" ng-init="init()">
</div>

由于某种原因,每次加载页面时,这个获取调用都会被调用两次.这是标准行为吗?

非常感谢,

短跑

解决方法

这个问题也可能是因为在您的页面中安装了一个ng-app路由到您的控制器和ng控制器引用.例如,如果您的应用程序如下所示:
<html lang="en" ng-app="myApp">
<head>...</head>
<body>
<div ng-controller="myController">
...
</div>
</body>
</html>

定义应用程式的Javascript:

angular.module('myApp',[]) {
$routeProvider.when('/path',{templateUrl: '...',controller: myController);

在上述情况下,通过定义的路由到myController,控制器将被实例化两次,您将看到两个调用,如所述.

更新

以上代码描述了什么是问题,但是正确的解决方案是缺少的,所以我按照@Intrepid评论更新了答案.

如果您已经在路由中定义,需要从您的html模板中删除ng-controller =“myController”.

猜你在找的JavaScript相关文章