我正在尝试使用本教程https://thinkster.io/tutorials/mean-stack/wiring-everything-up学习angular,但我遇到了一个问题,即打开应用程序时会陷入调用/posts url的无限循环。我已经与邮递员检查了我的路线,它们工作正常,所以我不确定为什么这不能正确解决。下面是“post”服务、“mainCtrl”控制器和配置。如果他们看到我的错误,或者如果我需要提供更多的代码来帮助他们,能不能有人看一下并告诉我。谢谢。
服务
app.factory('posts', ['$http', function($http){
var o = {
posts:[]
}
o.getAll = function() {
return $http.get('/posts').success(function(data){
angular.copy(data, o.posts);
});
};
return o;
}])控制器
app.controller('MainCtrl', ['$scope', 'posts', function($scope, posts){
$scope.test = 'Hello world!';
$scope.posts = posts.posts;
$scope.addPost = function(){
if(!$scope.title || $scope.title === '') { return; }
$scope.posts.push({
title: $scope.title,
link: $scope.link,
upvotes: 0,
comments: [
{author: 'Joe', body: 'Cool post!', upvotes: 0},
{author: 'Bob', body: 'Great idea but everything is wrong!', upvotes: 0}
]
});
$scope.title='';
$scope.link='';
}
$scope.incrementUpvotes = function(post) {
post.upvotes += 1;
};
}]);配置
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider){
$stateProvider
.state('home', {
url:'/home',
templateUrl:'/home.html',
controller:'MainCtrl',
resolve: {
postPromise: ['posts', function(posts){
return posts.getAll();
}]
}
})
.state('posts', {
url:'/posts/{id}',
templateUrl:'/posts.html',
controller:'PostsCtrl'
})
$urlRouterProvider.otherwise('home');
}])发布于 2017-01-18 09:48:37
我将用一个对我部分有效的解决方案来结束这个问题。我之所以这么说,部分原因是我不再经历无限循环,但如果有人在做教程时遇到这个问题,他们最终会遇到一个新问题,单击submit确实会创建一个新帖子,但数据不在那里。在刷新后,您将获得您正在寻找的结果,但我还没有解决这个新问题。
无限循环的解决方案是在服务函数中使用它
return $http.get('/posts').then(function(data){
angular.copy(data.data, o.posts);
});本教程要求的成功语法不起作用。
https://stackoverflow.com/questions/41684803
复制相似问题