2016-08-01 15 views
1

Ich habe eine AngularJS-Anwendung mit verschiedenen Ansichten. Eine dieser Ansichten wird verwendet, um ein Werkzeug zu steuern, das drei verschiedene Zustände aufweist: gestartet, gestoppt, mit entsprechenden Knöpfen pausiert.Aktualisieren Ansichten auf laden Methode + http.get seltsames Verhalten

Das Tool läuft auf einem Server und ich möchte den Zustand meiner Ansicht mit den Daten vom Server jedes Mal aktualisieren, wenn ich zurück gehe. Beispiel: Ich starte das Tool und gehe dann zu einer anderen Ansicht. Wenn ich wieder in der Werkzeugansicht bin, rufe ich einen Service unter $ http.get an, um den Status meines Tools zu erhalten. Dies gibt mir eine Zeichenfolge "gestartet", und ich verwende es, um die Elemente meiner Ansicht zu aktualisieren.

1 - Ist es besser ng-init zu verwenden = "update()" in meinem Tool.html zu aktualisieren an jedem wie neu laden in:

<div ng-init=update()> [all my content] </div> 

oder Update nennen () in meinem Werkzeug-Controller? Oder vielleicht eine andere Methode, die Sie mir vorschlagen könnten.

2 - ich versuchte, die beide Präzedenzfall Verfahren und in jedem Fall habe ich ein Problem, wo manchmal die http.get nicht funktioniert, und die Elemente werden nicht korrekt aktualisiert. Ich benutze es auf diese Weise:

$http.get('linkToGetTheState') 
      .then(function(response) { 
       $scope.toolStatus = response.data; 
      }) 
switch($scope.toolStatus) 
... 

Manchmal funktioniert es, andere Zeit es nicht (wenn ich Schritt für Schritt ausgeführt werden, es every von Anfang an dem http.get bis zum Ende des Schalters springt und toolStatus bleibt undefined), und noch seltsamer, es funktioniert besser, wenn ich die Funktion zweimal aufrufen ... Wenn jemand Ahnung hat, was hier und/oder warum passiert, würde ich sehr dankbar sein.

Ich hoffe, meine Frage ist klar, ich bin neu in Angular/StackOverflow, und ich kann präzisieren, wenn nötig.

Antwort

0

Mein Problem ist gelöst. Hier sind die Lösungen, die ich gefunden:

1 - Ich persönlich bevorzuge die update() Funktion in meinem Controller wie folgt zu nennen:

app.controller('MyCtrl', function ($scope, ...) { 
    [...] 

    $scope.update = function() {    
     ... 
     }); 
    }; 

    [...] 

    $scope.update(); 
}); 

diese Weise wird jedes Mal, wenn die entsprechende Ansicht angezeigt wird, ist die Funktion Einmal aufgerufen, um es zu aktualisieren (beim Wechseln der Tabs UND beim Aktualisieren der Seite).

- 2 Für diesen Teil weiß ich eigentlich noch nicht, wo das Problem wirklich herkommt. Ich benutzte die Methode Gatsbill beriet mich hier (in der Edit Teil seines Beitrags): Gatsbill answer zu reinigen/reorganisieren mein Projekt. Und mit dem Service zu handhaben $http Anfrage, es war in Ordnung.