Angular-UI-路由器解析不工作

Angular-UI-router resolve not working

我遇到了这个问题,当我在 Angular-ui-router 中使用 resolve 导致我的站点每秒执行数百个获取请求但不加载视图时。我正在使用完整的 MEAN 堆栈。

视图是使用内联模板创建的,例如:

    <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,页面没问题,它会加载。

编辑: 我将其归结为我编写的代码是针对 angular 版本 <= 1.4 的,因此我需要使用 .then 而不是 .success,但是当我使用 .then 时,我没有得到工厂的持久数据应该做的。

那么新的问题,我应该继续 angularJs 1.4 还是 try/get 帮助将其转换为 1.6?感谢大家的回答,谢谢。

不是直接 returning $http promise 对象,而是将 promise 对象放入变量中并 return 它。请像休闲一样,它对我有用。

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

            },
        function(data) {

            });
 return promise;

请注意 successerror 回调在 angular 1.6 中已弃用,请使用 then.

  1. Documentation

  2. Other resource