2017-01-16 3 views
2

Я пытаюсь изучить угловое значение этого учебника https://thinkster.io/tutorials/mean-stack/wiring-everything-up, и я попал в ловушку, где открытие приложения запускается в бесконечный цикл вызова/posts url. Я проверил свои маршруты с почтальоном, и они работают по назначению, поэтому я не уверен, почему это неправильно. Ниже приведена служба сообщений, контроллер mainCtrl и конфигурация. Может кто-нибудь взглянуть и сказать мне, если они видят мою ошибку или мне нужно предоставить больше кода, чтобы помочь. Спасибо.Угловой-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; 
}; 

}]); 

Config

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

Попробуйте «return angleular.copy (data, o.posts)»; – rrd

+0

Извините, но это не исправило. Это репозиторий, если вы хотите глубже взглянуть на него. https://github.com/RawleJuglal/rawle_news_app –

ответ

0

Я закрою этот вопрос с решением, которое частично работал для меня. Я говорю частично, потому что я больше не испытываю бесконечный цикл, но если кто-то сталкивается с этим вопросом, который делает учебник, он в конечном итоге столкнется с новой проблемой, когда нажатие кнопки submit создает новую запись, но данных там нет. После обновления вы получите результат, который вы ищете, но я не решил эту новую проблему.

Решение бесконечной петли использовать это в сервисной функции

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

Успех синтаксической учебник требует не работает.