如何在我的应用程序中的每个http请求的angularjs中实现微调器

时间:2016-01-12 20:21:46

标签: javascript angularjs jsp

我需要在我的应用程序中为每个http请求实现微调器或在angularjs中加载image / css.Below是我目前拥有的代码。我尝试通过将ng-show放在我的jsp顶部来实现它,但之后我无法在屏幕上看到任何内容。请帮忙

针对home.jsp

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<!DOCTYPE html>
<html>

<head>
  <title>Background Check App</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">  

  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
  <link rel="stylesheet" href="resources/css/style.css">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css">
</head>

<body ng-app="app" ng-controller="TabController as tab">
  <div class="container-fluid" ng-controller="TableData">  
        <div class="row jumbotron" ng-controller="AppController" ng-include="'resources/templates/header.jsp'"></div>   
        <!-- <div class="row" ng-include="'templates/navigation.html'"></div>    -->
        <div class="row">
            <div class="col-md-1"></div> 
            <div class="col-md-7 tab" ng-include="'resources/templates/navigation.jsp'"></div>
            <div class="col-md-1"></div>
            <div class="col-md-3">
                <form class="navbar-form navbar-left" role="search">
                    <div class="input-group">
                        <input type="text" class="form-control" placeholder="Search" name="q" ng-model="query">
                        <div class="input-group-btn">
                            <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
                        </div>          
                    </div>
                    <!-- <button class="close">&times;</button> -->
                </form>
            </div>
        </div>  
        <hr>
        <div class="row" id="home" ng-show="tab.isSet(1)" ng-include="'resources/templates/homeData.jsp'"></div>        
        <!-- <toBe-Initiated ng-show="tab.isSet(2)"></toBe-Initiated> -->
        <!-- <div class="row" ng-show="tab.isSet(2)" id="toBeInitiated" ng-include="'resources/templates/toBeInitiated.jsp'"></div> -->
        <!-- <div class="row" ng-show="tab.isSet(3)" id="initiated" ng-include="'resources/templates/initiated.jsp'"></div>
        <div class="row" ng-show="tab.isSet(4)" id="pending" ng-include="'resources/templates/pendingWithFadv.jsp'"></div>
        <div class="row" ng-show="tab.isSet(5)" id="inProgress" ng-include="'resources/templates/inProgress.jsp'"></div>    
        <div class="row" ng-show="tab.isSet(6)" id="completed" ng-include="'resources/templates/completed.jsp'"></div>
        <div class="row" ng-show="tab.isSet(7)" id="accessList" ng-include="'resources/templates/accessList.jsp'"></div>
        <div class="row upload" ng-show="tab.isSet(8)" id="dataUpload" ng-include="'resources/templates/dataUpload.jsp'"></div>
        <div class="row" ng-show="tab.isSet(9)" id="newMember" ng-include="'resources/templates/onBoard.jsp'"></div> -->
        <div class="footer"></div>  
  </div>
    <div ng-view></div>
    <!--scripts -->
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

    <script src="resources/angular/angular.js"></script>
    <!-- <script src="resources/angular/ui-bootstrap-tpls.js"></script> -->
    <!-- <script src="resources/angular/ui-bootstrap.js"</script> -->
    <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.0.0.js"</script>

    <script src="http://urigo.github.io/angular-spinkit/javascripts/angular-spinkit.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular-animate.js"></script>
  <script src="https://angular-ui.github.io/ui-router/release/angular-ui-router.js"></script>
  <script src="resources/angular/bootstrap-table-angular.js"></script>
  <script src="resources/angular/bootstrap-table-all.js"></script>
  <script src="resources/scripts/app.js"></script>
  <script src="resources/scripts/loginValidate.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
  <script src="https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.12.0.js"></script>
  <script src="resources/angular/angular-bootstrap-file-field.js"></script>
  <!-- <script src="js/app.js"></script> -->
 <!--  <script src="silviomoreto-bootstrap-select-a8ed49e/dist/js/bootstrap-select.js"></script>  -->
    <!-- <script src="https://code.jquery.com/jquery.js"></script> -->
    <script src="https://rawgit.com/hhurz/tableExport.jquery.plugin/master/tableExport.js"></script>
  <script src="resources/angular/ng-file-upload/ng-file-upload-shim.js"></script> <!-- for no html5 browsers support -->
  <script src="resources/angular/ng-file-upload/ng-file-upload.js"></script>
    <script src='resources/angular/angular-upload.min.js'></script>  
  <script src="resources/angular/dirPagination.js"></script>
  <script src="resources/angular/angular-route.js"></script>

    <!--scripts -->
</body>

</html>

tobeInitiate.jsp

<!--     <div img src="resources/images/spinner.jpg" ng-show='loading'> -->
      <div class="col-md-1" > </div>      
      <div class="col-md-10">
        <!-- <input type="button" id="btnExport" value=" Export Table data into Excel " onclick="exportToExcel()" /> -->
        <!-- <button type="submit" class="btn btn-primary" id="btnExport" onclick="exportToExcel()">Export to Excel</button> -->
        <!-- <button class="btn btn-link" id="btnExport" > --> <!-- ng-click="exportToExcel('#toBeInitiatedData')"> -->
            <a href="downloadExcel"<span class="glyphicon glyphicon-share"></span> Export to Excel</a>
        <!-- </button> -->
        <div class="data" id="toBeInitiatedData" data-ng-controller="tobeinitiatedCtrl" data-ng-init="toBeInitiatedOnLoad()">
        <script type="text/ng-template" id="myModalContent.html">
        <div class="modal-header">
            <h3>I'm a modal!</h3>
        </div>
        <div class="modal-body">
            Employee Id {{x.initiatedFor}}
        </div>
        <div class="modal-footer">
            <button class="btn btn-primary" ng-click="ok()">OK</button>
            <button class="btn btn-warning" ng-click="cancel()">Cancel</button>
        </div>
    </script>
          <table class="table table-hover table-condensed">
            <thead>
              <tr>
                <!-- <th>S.No.</th> -->
                <!-- <th>Employee ID</th> -->
                <th>
                  <a href="#" ng-click="sortType = 'EmpId'; sortReverse = !sortReverse" ng-model="initiatedFor">
                    Employee ID 
                    <span ng-show="sortType == 'EmpId' && !sortReverse" class="fa fa-caret-down"></span>
                    <span ng-show="sortType == 'EmpId' && sortReverse" class="fa fa-caret-up"></span>
                  </a>
                </th>
                <!-- <th>Employee Name</th> -->
                <th>
                  <a href="#" ng-click="sortType = 'EmpName'; sortReverse = !sortReverse" ng-model="empName">
                    Employee Name 
                    <span ng-show="sortType == 'EmpName' && !sortReverse" class="fa fa-caret-down"></span>
                    <span ng-show="sortType == 'EmpName' && sortReverse" class="fa fa-caret-up"></span>
                  </a>              
                </th>
                <!-- <th>Requested By</th> -->
                <th>
                  <a href="#" ng-click="sortType = 'ReqBy'; sortReverse = !sortReverse" ng-model="initiatedBy">
                    Requested By 
                    <span ng-show="sortType == 'ReqBy' && !sortReverse" class="fa fa-caret-down"></span>
                    <span ng-show="sortType == 'ReqBy' && sortReverse" class="fa fa-caret-up"></span>
                  </a>              
                </th>
                <th>
                  <a href="#" ng-click="sortType = 'ReqDateParsed'; sortReverse = !sortReverse" ng-model="requestedDate">
                    Requested Date
                    <span ng-show="sortType == 'ReqDateParsed' && !sortReverse" class="fa fa-caret-down"></span>
                    <span ng-show="sortType == 'ReqDateParsed' && sortReverse" class="fa fa-caret-up"></span>
                  </a>              
                </th>
                <th>Review Data</th>
                <th>Action</th>
              </tr>
            </thead>
            <tbody>
              <tr dir-paginate="x in names | orderBy:sortType:sortReverse | filter:query | itemsPerPage:10">
                <!-- <td>{{x.SNo}}</td> -->
                <td>{{x.initiatedFor}}</td>
                <td>{{x.empName}}</td>
                <td>{{x.initiatedBy}}</td>
                <td>{{x.requestedDate | date: 'dd-MMM-yyyy'}}</td>
                <td><button type="button" class="btn btn-link" ng-click="open(x)">View {{x.initiatedFor}}</button></td>
                <td>                
                  <select name="action" class="selectContainer actionSelect form-control" ng-model= "action"title="Select 1 action" width="50px">
                    <option value="resend">Resend</option>
                    <option value="initiate">Initiate</option>
                  </select>
                </td>
                <td><input type="checkbox" ng-model="confirmed" ng-click="toggleSelection(x,confirmed,initiate,initiatedFor)" value="{{x}}" /></td>
              </tr>
            </tbody>        
          </table>

          <dir-pagination-controls max-size="10" direction-links="true" boundary-links="true"></dir-pagination-controls>    
        <button class="btn btn-primary pull-right" ng-click="resendIntitate()">Resend/Initiate</button>
        </div>

        <div>
            <!-- <button class="btn btn-primary pull-right" ng-click="resendIntitate()">Resend/Initiate</button> -->
        </div>      
      </div>      
      <div class="col-md-1"> </div>
     <!--  </div> --

app.js

(function() {   
    var app = angular.module('app', ['ui.bootstrap', 'ngFileUpload', 'bootstrap.fileField','angularUtils.directives.dirPagination','ui.router','ngRoute']);

app.controller('tobeinitiatedCtrl',['$scope','$http','$modal',function($scope, $http,$modal){
            $scope.initiate=[];
            $scope.names=[];
            $scope.action='initiate';
        //alert("tobeinitiated");
        $scope.toBeInitiatedOnLoad = function(){
            $scope.loading = true;
            //alert($scope.id);
            $http({
                url: 'toBeInitiated',
                method: "GET",
                headers: {'Content-Type': 'application/json'}
            }).success(function (data, status, headers, config) {
                console.log("success");
                $scope.loading = false;
                //$scope.initiate = angular.copy(data);
                //$scope.initiate.push(data);
                $scope.names=data;
                //$scope.initiate = angular.copy($scope.names);
            }).error(function (data, status, headers, config) {
                console.log("failed");
            });
        };

        $scope.toggleSelection=function toggleSelection(x,conf,initiate,initiatedFor){
            alert("change");
            //$scope.initiate=[];
            //var idx = $scope.names.indexOf(initiatedFor);
            //alert(idx);
            if (conf)
                {
                $scope.initiate.push(x);
                //alert($scope.initiate[0].empName);
                }
            else
                {
                //var idx1 = initiate.indexOf(x.initiatedFor);
                for (var i=0;i<initiate.length;i++)
                    {
                    if (angular.equals(initiate[i],x))
                        initiate.splice(i,1);
                    }
                //alert("false");
                }
        };


        $scope.resendIntitate = function(){
            //$scope.name={};
            var index = 0;
            $scope.initiate.forEach(function (name) {
                console.log('rows #' + (index++) + ': ' + JSON.stringify(name));
            });
            /*var data ={
                    initiatedFor : $scope.name.initiatedFor
            }*/
            alert(JSON.stringify($scope.initiate));
            //alert(JSON.stringify($scope.initiate));
            $http({
                url: 'fromInitiated',
                method: "POST",
                data:JSON.stringify($scope.initiate),
                headers: {'Content-Type': 'application/json'}
            }).success(function (data, status, headers, config) {
                console.log("success");
                //$scope.loading = false;
                //$scope.initiate = angular.copy(data);
                //$scope.initiate.push(data);
                //$scope.names=data;
                //$scope.initiate = angular.copy($scope.names);
            }).error(function (data, status, headers, config) {
                console.log("failed");
            });
        };

        $scope.open = function open (size) {
            //alert(x);
             var modalInstance = $modal.open({
                  templateUrl: 'myModalContent.html',
                  controller: 'ModalInstanceCtrl',
                  size:size,
                  resolve:{
                      names:function(){
                        return $scope.names;  
                      },
                      x:function(){
                          return size;
                      }
                  }
                });
        };          
    }]);;
})();

3 个答案:

答案 0 :(得分:0)

那里有多种解决方案。我们使用的最好的之一就是YouTube加载栏。

检查out。如果这对您不起作用,请告诉我。我们还有其他解决方案。

答案 1 :(得分:0)

没有任何组件很容易做到。但在我的情况下,页面我建立了几个休息调用服务器。不同的面板包含不同的东西如果一个面板加载失败,另一个面板可能成功。在整个页面上没有人像一个大胖子装载机。
首先,我在已有的公用事业服务中添加了一处房产。我叫它 loaders={}
然后我在所有get,patch,post和delete中添加了一个id请求头。 (我也做类似的服务器验证)

{headers: {'loader-id': 'account-panel'}}

在angularjs中,你可以在httpInterceptor中做一些事情。在每个请求拦截中 我寻找标题,如果它在那里我选择它upp并将其添加到服务中。

ex: loaders[request.headers['loader-id']]=true;

在拦截器中我还拦截了成功的响应和responseError,在这些方法中我将加载器设置为false。例如:

if(response.config.headers['loader-id'])
{loaders[request.headers['loader-id']]=false;}

最后,我在每个面板标题中添加如下内容:

<div class='pull-left loader' ng-show='hasLoader('account-panel')'><i class='fa fa-spinner fa-spin'></i></div>

hasloader只检查服务加载器属性

答案 2 :(得分:0)

$('#busyIndicator').fadeOut(2000).modal('hide');