Javascript AngularJS应用程序向后端发出多个请求

Javascript AngularJS应用程序向后端发出多个请求,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,我有一个Angular应用程序,它可以对后端服务(由node.js和REST接口提供支持)进行一些调用(目前为POST和GET)。在开发应用程序时,我注意到每次按下按钮或加载页面时,它都会向后端发出两个请求。奇怪的是,一切都正常,但每次我按下某个按钮,后端就会收到两个请求。我不使用任何花哨的包,只使用ngRoute、ngResource和routeStyles作为css部分。任何人都知道应用程序表现出这种行为的原因是什么 实际上我发现了另一个类似的例子,但是除了Angular外,OP使用了exp

我有一个Angular应用程序,它可以对后端服务(由node.js和REST接口提供支持)进行一些调用(目前为POST和GET)。在开发应用程序时,我注意到每次按下按钮或加载页面时,它都会向后端发出两个请求。奇怪的是,一切都正常,但每次我按下某个按钮,后端就会收到两个请求。我不使用任何花哨的包,只使用ngRoute、ngResource和routeStyles作为css部分。任何人都知道应用程序表现出这种行为的原因是什么

实际上我发现了另一个类似的例子,但是除了Angular外,OP使用了express,没有答案

编辑添加了一些代码

在app.js中:

 'use strict';

    var cacheBustSuffix = Date.now();

    angular.module('myApp', ['myApp.controllers', 'myApp.services', 'myApp.filters', 'ngRoute', 'ngResource', 'routeStyles'])
            .config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
                    $locationProvider
                            .html5Mode({enabled: true,
                                requireBase: false})
                            .hashPrefix('!');

                    $routeProvider
                            .when('/', {redirectTo: '/myApp'})
                            .when('/myApp', {
                                templateUrl: '/partials/home.html?cache-bust=' + cacheBustSuffix,
                                controller: 'ctrlHome'
                            })
                            .when('/myApp/search', {
                                templateUrl: '/partials/search.html?cache-bust=' + cacheBustSuffix,
                                controller: 'ctrlSearch'
                            })
                            .when('/myApp/list/', {
                            templateUrl: '/partials/list.html?cache-bust=' + cacheBustSuffix,
                            controller: 'ctrlList'
                            })
                            // a bunch of other redirections
                            .otherwise({
                                templateUrl: '/partials/404.html?cache-bust=' + cacheBustSuffix,
                                controller: 'ctrl404'});
                }]);
从services.js:

'use strict';

var app = angular.module('myApp.services', ['ngResource']).
        factory('List', function ($resource) {
            return $resource(WSROOT + '/search', {}, {get: {method: 'GET', isArray: false}});
        });
从controllers.js,一个发出多个请求的控制器

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

var ctrlList = controllers.controller('ctrlList', function ($scope, $window, List) {
    $window.document.title = 'myApp - List';

    List.get({}, function (data) {
        // $scope.res is an array of objects
        $scope.res = data.response;
        $scope.nitems = data.response.length;
      });
    });
    ctrlList.$inject = ['$scope', 'List'];
以及加载索引+主页并导航到其他页面时的网络调用。如您所见,它首先加载索引页、其中列出的脚本和样式(未显示),然后加载主页,在主页上我有一个与上面类似的控制器,然后突然向我的web服务器发出两个请求:


我们可以查看您的HTML文件吗?不久前我就有这个问题。我的解决方案是,通过在路由中声明一个控制器,在页面中声明,当每个控制器加载两次时,就会创建一个双post

//Home
    .state('tab.home', {
        url: '/home',
        views: {
            'tab-home': {
                templateUrl: 'templates/tab-home.html',
                controller: 'HomeCtrl' // <-- This goes away
            }
        }
    })
//主页
.state('tab.home'{
url:“/home”,
观点:{
“制表符主页”:{
templateUrl:'templates/tab home.html',

控制器:“HomeCtrl”//您能确认控制器是否也加载了两次吗?您能给我们看一下您的一些代码吗?正如devqon所说,您的控制器可能加载了两次!出现了同样的问题,这就是问题所在。