1

У меня возникла проблема, когда, когда я использую разрешение в Angular-ui-router, мой сайт выполняет сотни запросов на получение в секунду, но не загружает представление. Я использую полный MEAN-стек.Угловой-UI-маршрутизатор не работает

Представления создаются с помощью встроенных шаблонов: например

<script type="text/ng-template" id="/home.html">......</script> 

, а затем использовали в <ui-view> теге.

Пожалуйста, посмотрите на этот код:

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.config([ 
    '$stateProvider', 
    '$urlRouterProvider', 

    function($stateProvider, $urlRouterProvider) { 
     $stateProvider 
     .state('home', { 
      url: '/home', 
      templateUrl: '/home.html', 
      controller: 'MainCtrl', 
      resolve : { 
       postPromise : ['posts', 
       function(posts) { 
        return posts.getAll(); 
       }] 
      } 
     }) 

Если я не использую в Resolve, страница хорошо, он загружает.

EDIT: Я варил вниз к тому, что код я написал, было для угловой версии < = 1.4, и поэтому мне нужно использовать .then вместо .success, но когда я использую .then я не получаю постоянные данные что фабрика должна делать.

Итак, новый вопрос, должен ли я просто остановиться на angularJs 1.4 или попробовать/получить помощь, чтобы преобразовать это в 1.6? Цените все ответы, спасибо.

ответ

0

Вместо прямого возврата $httppromise объект принимает promise объект в переменную и возвращает его. Пожалуйста, сделайте это как паров, это сработало для меня.

var promise = $http.get('posts'); 
    promise.then(function(response) { 

      }, 
     function(data) { 

      }); 
return promise; 

Обратите внимание success и error спины вызова являются устаревшими в angular 1.6, используйте then.

  1. Documentation

  2. Other resource

Смежные вопросы