2017-02-10 82 views
1

我得到了這個問題,當我在Angular-ui-router中使用解析時,導致我的站點每秒執行數百次獲取請求,但沒有加載視圖。我正在使用完整的MEAN堆棧。在<ui-view>標籤使用Angular-UI-router解析不起作用

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

然後:

的意見與聯模板e.g創建。

請看看這段代碼:

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(); 
       }] 
      } 
     }) 

如果我不使用的決心,該頁面是好的,它加載。

編輯: 我把它寫下來,我寫的代碼是角度版本< = 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; 

請注意successerror回調在angular 1.6棄用,請then

  1. Documentation

  2. Other resource