我正在用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. }); }; }];
我的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”.