Мое разрешение UI-роутера ничего не возвращает без ошибок

0

Я настроил свой MongoDb и API REST, и когда я попытался подключить его к моему угловому приложению, я думаю, что он не может решить.

Я изучаю приложение MEAN в этом учебнике.

Это моя конфигурация ui-router.

var app = angular.module('flapperNews', ['ui.router']);
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: 'PostCtrl'
    });
    $urlRouterProvider.otherwise('home');
  }
]);

И это мой завод.

app.factory('posts', ['$http',function (){
    var o = {
      getAll: function(){
        return $http.get('/posts').success(function(data){
          angular.copy(data,o.posts);
        });
      }
    };
    return o;
  }]);

И это возвращение/сообщений

 curl http://localhost:3000/posts/
[{"_id":"564f63d0e1f4efce4e36d863","name":"test","link":"http://test.com","__v":1,"comments":["564f70adf3340cab52f9d117"],"upvotes":2}]

Результатом является белая страница с ошибкой whitout. Вы можете мне помочь?

Теги:
express

3 ответа

0
Лучший ответ

Проблема, которую вы имеете здесь, связана с сервисом $ http на вашем заводе. Вам нужно ввести его в функцию, например:

app.factory('posts', ['$http',function ($http){
    var o = {
      getAll: function(){
        return $http.get('/posts').success(function(data){
          angular.copy(data,o.posts);
        });
      }
    };
    return o;
  }]);

Остальная часть кода в порядке, она должна работать без каких-либо проблем. Вот один модифицированный и упрощенный plunker, который использует $q для возврата обещания вместо $http так как у меня нет конечной точки http для вызова.

  • 0
    Спасибо, но теперь мои данные возвращаются пустыми: / я понятия не имею, почему ...
  • 0
    таблица o.posts на моем заводе не была инициализирована .... спасибо за помощь
3

Внесите $ http на свой завод, как показано ниже.

 app.factory('posts', ['$http',function ($http){ your code }])
  • 2
    да, вы правы, пропустив $ http-инъекцию в сервисной функции
0

Одна ошибка, которую я вижу, заключается в том, что вы не вернули обещание в своем решении. getAll() использует async api, и вам придется возвратить обещание. Так что измените

posts.getAll();

в

posts.getAll().then(function(data) {
    return data.data;
})

в вашем решении. Однако я не уверен, полностью ли это решит вашу проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню