使用node express js在AngularJS中重复ajax调用

时间:2013-07-03 22:49:05

标签: javascript ajax angularjs express

我开始使用AngularJS,并使用nodejs设置服务器,一切都很顺利,但是当我打开chrome开发人员工具时,我看到应用程序进行了两次ajax重复调用以获取节点/ mongo发送的json数据。 首先我认为模板玉是问题,但在使用普通的html之后,以同样的方式工作

a demo in appfog

任何想法?

这是AngularJS中的代码

angular
.module('foro')
.config(function($routeProvider){
    $routeProvider
        .when("/",{
            templateUrl : "/partials/questions.html",
            controller: "QuestionsCtrl"
        })
        .when("/questions/:questionId",{
            templateUrl: "/partials/singleQuestion.html",
            controller: "SingleQuestion"
        })


    })
    .controller("QuestionsCtrl", function($scope, $http){

        $http.get("/questions").success(function(data){
            $scope.questions = data;        

        }); 
   })
   .controller("SingleQuestion", function($scope, $http, $routeParams){
      var questionId = $routeParams.questionId;

      $http.get("/question/"+questionId).success(function(data){
          $scope.question = data;
          $scope.votes = data[0].votes;
      });

这是节点/快速服务器中的响应方式

app.get('/questions', function (req, res) {
  Question.find({}).sort({_id:"descending"}).execFind(function(err,docs){
      if(err) res.json(err)
      res.json(docs)
  });
});

app.get('/question/:questionId', function (req, res) {
  var questionId = req.params.questionId;

  Question.find({_id: questionId},function(err,docs){
      if(err) res.json(err)
      res.json(docs)
  });
});

1 个答案:

答案 0 :(得分:3)

问题在于您的部分内容为ng-controller="QuestionsCtrl"

当您加载部分时,路由配置已将指定的控制器分配给ng-view

      $routeProvider
        .when("/",{
            templateUrl : "/partials/questions.html",
            controller: "QuestionsCtrl"
        })

这会导致同一个控制器嵌套两次。

<div ng-controller="QuestionsCtrl">

中的questions.html行中删除ng-controller部分