2016-06-21 7 views
0

Ich verwende stateProvider für Routing.So vermeiden Sie Flickrings von Ansichten mit angularjs

Problem:

Wenn ich auf einen Link klicken, mein Controller ruft die Fabrik Service rekursiv. Was passiert, ist, dass nach jedem erfolgreichen Ajax-Anruf meine Ansicht blinkt oder flackert. (Was ich nicht möchte)

Bitte geben Sie einige Tipps. Bisher habe ich ng-cloak und class="ng-cloak" versucht, ohne Glück.

Frage: Wie kann ich diesen Flimmereffekt vermeiden, bis alle Ajax-Anrufe abgeschlossen sind.

.state('vehicle', { 
     abstract:true, 
     url: "/vehicle", 
     template: '<div ui-view style="height:100%"></div>',   
     controller:'vehicleManagementCtrl' 
    }) 
    .state('vehicle.list', { 
     url: "",   
     templateUrl: 'views/br_manager/mg_vehicleManagement.html' 
    }) 
    .state('vehicle.add', { 
     url: "", 
     templateUrl: 'views/br_manager/mg_addVehicle.html' 
    }) 
    .state('vehicle.edit', { 
     url: "", 
     templateUrl: 'views/br_manager/mg_editVehicle.html' 
    }) 
    .state('vehicle.delete', { 
     url: "", 
     templateUrl: 'views/br_manager/mg_addVehicle.html' 
    }) 
+0

Überprüfen Sie die zweite Antwort - 'lösen' bei der Verwendung von' state' - http://StackOverflow.com/questions/28514241/angularjs-how-to-prevent-code-flash-in-page-while-loading –

Antwort

0

Versuchen resolve in Ihren Staaten, auf diese Weise mit, dass ein Ajax-Aufruf zuerst, um abgeschlossen werden muss angeben können, um die Ansicht anzuzeigen. Suchen Sie nach weiteren Informationen zur Auflösung in docs.

+0

Vielen Dank für den Tipp –

0

Diese Antwort würde wahrscheinlich besser als Kommentar passen, aber ich kann das noch nicht tun.

Haben Sie die ng-claw css-Klassen hinzugefügt, um zu arbeiten? Bitte überprüfen Sie: https://docs.angularjs.org/api/ng/directive/ngCloak

Machst du mehrere Anfragen bei jedem Klick? Ich habe die Rekursivität nicht gut verstanden.

Können Sie ein Beispiel oder eine Geige geben, damit wir den Code sehen können?

+0

wenn ich auf den Link klicke, ruft mein Controller fetchYearList() auf, nachdem die Antwort erhalten wurde, dh 200 oder 201 werden nacheinander für den nullten $ Indexwert aufgerufen factory.fetchVehicleList = function (year) {return $ resource (url + year, {) }, {fetch: method: 'GET', header: 'application/json', interception: response() {funktion (daten) {return data}}}} –

Verwandte Themen