javascript - 在routeprovider中使用resolve时AngularJS加载图标

标签 javascript angularjs

我正在尝试做类似this的事情问题,但这些答案似乎都不起作用。他们都使用 Controller 来显示加载图标,如果他们读到 documentation ,他们会知道在请求被解析/拒绝之前 Controller 不会初始化,因此来自 Controller 的任何加载旋转器都不会工作。

是否可以在this中显示加载旋转器jsfiddle 这样我们就可以知道请求正在进行中,而不是仅仅将页面留空直到它得到解决?

我想做这样的事情:

    $routeProvider.when('/', {

        controller: 'AppCtrl',
        resolve: {
            app: function ($q, $timeout) { 
                //show a spinner
                //do something
                //no more spinner
        }
     });

最佳答案

也许,这段代码会有用。

angular.module('myApp', ['ngRoute'])
.config(function($routeProvider) {

    $routeProvider.when('/', {

      template: '<h1 class="panel">This is my app</h1>',
      controller: 'AppCtrl',

      resolve: {
        app: function($q, $timeout, $rootScope) {
          $rootScope.rootState.routeLoading = true;
          var defer = $q.defer();

          $timeout(function() {
            $rootScope.rootState.routeLoading = false;
            defer.resolve();
          }, 2000);
          return defer.promise;
        }
      }
    });
  })
  .controller('AppCtrl', function() {
    console.log('This is the app controller');
  })
  .run(function($rootScope) {
    $rootScope.rootState = {
      routeLoading: false
    }
  });
  
  angular.bootstrap(document.body, ['myApp']);
body {
  position: relative;
}

.custom-preloader {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
  z-index: 1001;
  background-color: #999;
  display: none;
}

.custom-preloader h2 {
  text-align: center;
  margin: auto;
}

.custom-preloader_visible {
  display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.min.js"></script>
<script src="https://code.angularjs.org/1.2.1/angular-route.min.js"></script>
<div class="custom-preloader" ng-class="{'custom-preloader_visible': rootState.routeLoading }">
  <h2>
    Loading...
  </h2>
</div>
<ng-view></ng-view>

关于javascript - 在routeprovider中使用resolve时AngularJS加载图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60505439/

相关文章:

javascript style.display 不工作

javascript - Ajax 验证不起作用

javascript - Angular Trix 不适用于所有浏览器

angularjs - 如何在 Angular js中制作自定义指令或在指令中传递变量

javascript - "canvas.toDataURL("图像/png ")"在 Firefox 中无法正常工作

angularjs - 如何仅在querytext的长度等于2时才开始过滤

javascript - 如何使用 Protractor 执行多个同时请求?

javascript - React `onClick` 函数和类组件之间的更改

javascript - D3js 拖动与点击

javascript - 比较不同格式的日期