2016-07-04 9 views
1

einen gemeinsamen Lader oder Fortschrittsbalken auf ein ganzes Projekt füge ich in AngularJS mein Projekt mache, wie kann ich einen gemeinsamen Loader oder Fortschrittsbalken auf ein ganzes Projekt mit CSS hinzufügen, anstatt Show/Verbergen des Blocks aufrufen Funktionen für die Div-Klasse jedes Controllers.wie kann ich

Antwort

0

Sie müssen einen Interceptor schreiben, um das zu tun. Um über Interceptor zu erfahren, siehe: https://docs.angularjs.org/api/ng/service/ $ http

Aber jemand hat bereits alle Arbeiten getan, also warum das Rad neu erfinden! http://chieffancypants.github.io/angular-loading-bar/

+0

konnte nicht ändern Modul inspinia aufgrund instanziiert: Fehler: [$ Injektor: modulerr] http://errors.angularjs.org/1.4.7/$ injector/modulerr? p0 = o ...) bei Fehler (nativ) bei http: // localhost: 5000/js/plugins/common/angular.min.js: 6: 416 bei http: // localhost: 5000/js/plugins/common/angular.min.js: 38: 184 bei m (http: // localhost: 5000/js/plugins/common/angular.min.js: 7: 322) bei h (http : // localhost: 5000/js/plugins/common/angular.min.js: 37: 275) – Lakshman

+0

Danke praveen ich bekomme diesen Fehler nach der Befolgung der Anweisungen bei Link http://chieffancypants.github.io/angular-loading-bar/ – Lakshman

+0

Thanq funktioniert jetzt .. – Lakshman

0

Bis Sie die Antwort erhalten Sie einen Warte Dialog setzen können .. nach Erhalt der Antwort, die Sie den Dialog verstecken .. Hier ist ein Link von einfachen Dialog mit Jquery waitingDialog

Und Sie können diesen Dialog werden am besten mit Winkel verwendet, und Sie können es entsprechend Ihrer Anforderung so viel Glück ändern ..

tun Sie es so etwas wie dieses

angular.module('app').factory('httpInterceptor', ['$q', '$rootScope', 
    function ($q, $rootScope) { 
     var loadingCount = 0; 

     return { 
      request: function (config) { 
       if(++loadingCount === 1) $rootScope.$broadcast('loading:progress'); 
       return config || $q.when(config); 
      }, 

      response: function (response) { 
       if(--loadingCount === 0) $rootScope.$broadcast('loading:finish'); 
       return response || $q.when(response); 
      }, 

      responseError: function (response) { 
       if(--loadingCount === 0) $rootScope.$broadcast('loading:finish'); 
       return $q.reject(response); 
      } 
     }; 
    } 
]).config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.interceptors.push('httpInterceptor'); 
}]); 

Dann Ereignis $rootScope überall gebunden verwenden (bevorzugt in der Richtlinie zu verwenden, oder führen Block app.js):

$rootScope.$on('loading:progress', function(){ 
    // show loading gif 
}); 

$rootScope.$on('loading:finish', function(){ 
    // hide loading gif 
}); 

Sie mehr lesen kann es über hier codingsmackdown

+0

Es wird nicht für eine Reihe von Controllern funktionieren. Ich brauche einen Loader, der automatisch aufgerufen werden muss, wenn HTTP-Anfragen ausgelöst werden, weil ich nicht für jeden Controller separat waitingDialog schreiben möchte. – Lakshman

+0

können Sie dies anrufen, wenn Sie Ihren Dienst anrufen und bei Antwort können Sie es ausblenden. Für mich geht das. Kannst du mir sagen, wo genau es nicht für dich funktioniert? – Rakeschand

+0

In unserem Projekt habe ich fast 50 Controller und jeder Controller hat 10 Service-Anrufe, wenn ich mag, wie Sie vorgeschlagen, ich muss WindowDialog für jeden Service-Aufruf zu verstecken/anzeigen, so das ist kein guter Ansatz.Ich brauche eine Lösung wie wenn eine http-Anfrage ausgelöst hat windowDialog sollte sichtbar sein und nach Erhalt der Antwort sollte es verstecken für alle Controller – Lakshman

0

Sie Winkel Laden verwenden können -bar http://chieffancypants.github.io/angular-loading-bar/#

Dies ist die beste Fortschrittsbalken im Hintergrund arbeiten.

Hier ist die Dokumentation http://angular-js.in/loading-bar/

Auch die Demo dort zur Verfügung steht.

Um Farbe der Ladebalken Verwendung css

#loading-bar .bar { 
    background-color: #2CA01C; 
} 
+0

danke ich habe es – Lakshman

+0

seine Arbeit! Aber kannst du mir sagen, wie ich meine eigene Farbe für den Standard-Ladebalken hinzufügen kann? – SanjanaHE

+0

Sie müssen css unter hinzufügen # loading-bar .bar { background-color: # 2CA01C; } –