2016-04-02 18 views
0

Ich bin neu bei angularjs und brauche eine Anleitung für den besten Ansatz für mein Projekt.
Der Großteil meines Codes funktioniert, aber ich habe Probleme, bei denen mein Code nicht immer wie erwartet funktioniert.
Wahrscheinlich aufgrund einiger Rennbedingungen mit den Webservices.
Da der Webservice komplett von der angularjs Anwendung getrennt ist, habe ich keine Möglichkeiten, Pre Seed.Angularjs, RESTful API, mehrere Dienste vorab laden

Ich benutze angular 1.5 mit ui.router, um Routing und $ http für Anfragen zu behandeln.

  • Wenn ich meine Benutzerseite/app/users öffne, benutze ich data-ng-init, um ein $ http.get und dann ng-repeat für eine Tabelle zu machen. Das funktioniert, aber ich habe diese kleine Lücke, während das System die Daten abruft.
  • Wenn ich auf die Details Schaltfläche klicke, leite ich nach/app/users /: userId um. Allerdings muss ich hier Daten-JSON-Daten beim Laden der Seite von mehreren Ressourcen abrufen, und von Zeit zu Zeit veröffentlicht dieser Schritt die Daten nicht. Scheint wie eine Art Racecondition, da ich sehe, dass die Daten mit einem console.log beim Callback zurückgegeben werden. Ich bekomme jedoch keine Fehler auf der Konsole.
  • Ich habe ein paar Lösungen ausprobiert, ohne wirklich gute zu finden. Da ich neu bei angularjs bin, denke ich, dass ich etwas Einfaches verpasst habe und einen Schub in die richtige Richtung brauche.

    Die fetching wie dies gemacht wird, so ziemlich einfache Sachen .:

    ApiService.whoami(). 
        then(
         function successCallback(response){ 
          $scope.user = response.data.data; 
          console.log(response); 
    
         }, 
         function errorCallback(response) { 
          SweetAlert.swal({ 
           title: "Data error", 
           text: response.data.error.message, 
           type: "warning", 
           confirmButtonColor: "#DD6B55", 
          }); 
         } 
        ); 
    

    Antwort

    0

    könnten Sie versuchen, $ timeout mit der Callback zu verzögern, ist es Zeit zu geben, um die Daten zu holen

    then(
        function successCallback(response){ 
        $timeout(function() { 
         $scope.user = response.data.data; 
         console.log(response); 
        }, 1000); 
        }, 
    

    https://docs.angularjs.org/api/ng/service/ $ timeout

    +0

    Das Problem scheint umgekehrt zu sein. Z.B. Ich habe eine Auswahlbox, die Select2 verwendet. Wenn ich meine Daten auf/users lade und sie in $ rootState speichere und dann auf die/users /: userID-Seite umschalte, ist alles gut. Wenn ich aktualisiere und Daten nicht vorhanden sind, wenn die Seite gerendert wird, funktioniert es nicht, selbst wenn Daten abgerufen worden sind. – cboxdk

    +0

    Können Sie den Code für Ihre Controller usw. anzeigen? –