2017-01-16 157 views
2

我試圖學習角度與本教程https://thinkster.io/tutorials/mean-stack/wiring-everything-up,我已經遇到了一個障礙,打開應用程序運行到無限循環調用/ posts url。我檢查了郵遞員的路線,他們正在按預期工作,所以我不知道爲什麼這不能正確解決。以下是'posts'服務,'mainCtrl'控制器和配置。有人可以看看並告訴我他們是否看到我的錯誤,或者我是否需要提供更多的代碼來提供幫助。謝謝。Angular-ui-router導致無限循環

服務

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'); 
}]) 
+0

感謝您的意見。我檢查了這一點,但它沒有解決我有 –

+1

的無限循環問題嘗試'返回angular.copy(數據,o.posts);' – rrd

+0

對不起,這也沒有解決它。如果你想深入研究它,這是存儲庫 https://github.com/RawleJuglal/rawle_news_app –

回答

0

我要關閉這個問題與部分已爲我工作的解決方案。我說部分是因爲我不再經歷一個無限循環,但如果有人遇到這個問題做了教程,他們最終會遇到一個新問題,點擊提交確實會創建一個新帖子,但數據不在那裏。刷新後,你會得到你正在尋找的結果,但我還沒有解決這個新問題。

的解決無限循環是在服務功能

return $http.get('/posts').then(function(data){ 
     angular.copy(data.data, o.posts); 
    }); 

成功語法教程呼籲不起作用使用這個。