我开始使用AngularJS,并使用nodejs设置服务器,一切都很顺利,但是当我打开chrome开发人员工具时,我看到应用程序进行了两次ajax重复调用以获取节点/ mongo发送的json数据。 首先我认为模板玉是问题,但在使用普通的html之后,以同样的方式工作
任何想法?
这是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)
});
});
答案 0 :(得分:3)
问题在于您的部分内容为ng-controller="QuestionsCtrl"
。
当您加载部分时,路由配置已将指定的控制器分配给ng-view
。
$routeProvider
.when("/",{
templateUrl : "/partials/questions.html",
controller: "QuestionsCtrl"
})
这会导致同一个控制器嵌套两次。
从<div ng-controller="QuestionsCtrl">
questions.html
行中删除ng-controller部分