2017-09-08 5 views
1

Ich versuche eine einfache eckige Logik und es funktioniert nicht für mich. Ich würde jede Hilfe mit diesem schätzen.Wie man eine Funktion verwendet, ergibt den gleichen Winkelregler

mein Controller hat etwas Ähnliches:

$scope.UpcomingEvents = {} 

    $scope.someID = 3; 

    $http.get(BaseUrl().url + 'jury/UpcomingEvents?someID=' + someID) 

    .success(function (response) { 

     console.log(response); 

     $scope.UpcomingEvents = response; 

    }) 

Dieser Controller korrekte Ergebnisse in meinem html gibt, wenn ich es so in meinem html-Datei aufrufen:

<tbody> 
      <tr ng-repeat="data in UpcomingEvents"> 
      <td>{{data.EventID}}</td> 
      <td>{{data.Title}}</td> 
      </tr> 
    </tbody> 

aber ich will UpcomingEvents ändern Tabelle in der Winkelsteuerung und dann eine neue Tabelle auf den HTML-Code anzeigen. Ich habe kein Glück dabei. In meiner Controller-Datei, wenn ich einen Wert für bevorstehende Ereignisse speichern, würde es einfach nicht speichern.

ich es so in meiner Controller Datei tue, nur unten, wo ich nenne die HTTP-GET-Funktion, so wie so:

  $scope.UpcomingEvents = {} 
     $scope.someID = 3; 
     $http.get(BaseUrl().url + 'jury/UpcomingEvents?someID=' + 
     someID) 
      .success(function (response) { 
      console.log(response); 
      $scope.UpcomingEvents = response; 
     }) 

     $scope.hello=0; 

     //the line that just does not work 
     $scope.hello= UpcomingEvents[0].EventID; 

Diese letzte Zeile ist das Speichern nicht, dass die ersten Wertes des nächsten Event. Mache ich etwas falsch?

Ich nenne dies in meinem html als

   {{hello}} 

und seine mir keine Ergebnisse.

jedoch der Wert wie dies in meinem html, wenn ich Ausgang, gibt es die richtige Ausgabe:

   {{ UpcomingEvents[0].EventID }} 

Es führt korrekt und gibt mir führen. aber wenn ich in eine andere Variable speichere, funktioniert es einfach nicht. Mir fehlt etwas in der Art, wie wir Werte im Winkelregler speichern.

Bitte helfen!

Antwort

1

Sie benötigen

$scope.hello= UpcomingEvents[0].EventID; 

innerhalb des success Anruf zu setzen, wie folgt aus:

$http.get(BaseUrl().url + 'jury/UpcomingEvents?someID=' + someID) 
    .success(function (response) { 
    $scope.UpcomingEvents = response; 
    $scope.hello= $scope.UpcomingEvents[0].EventID; 
}); 

$http.get ist ein asynchrones, genauer gesagt es nicht Wert selbst zurückkehrt, sondern ein $q versprechen. Die success Funktion ist ein Rückruf für, wenn das Versprechen aufgelöst wird. Die Zuweisung von UpcomingEvents[0].EventID zu $scope.hello außerhalb des Rückrufs führte dazu, dass $scope.helloundefined zugewiesen wurde. Um es einfach auszudrücken, diese Zuordnung wurde ausgeführt, bevor der Rückruf stattfinden konnte, als UpcomingEvents noch leer war.

Auch Ihre Aufgabe sollte wie folgt aussehen

$ scope.hello = $ scope .UpcomingEvents [0] .EventID;

Wie Sie UpcomingEvents innerhalb der $ Scope deklariert. Es existiert nicht außerhalb davon.

+0

Eine Frage, die ich habe folgende: Wenn ich $ scope.hello von dieser Erfolgsfunktion außerhalb der Erfolgsfunktion verwenden wollte, wie kann ich das verwenden? Ich möchte diesen $ scope verwenden.Hallo in einer anderen Funktion außerhalb der Erfolgsfunktion. Genauer gesagt möchte ich diesen $ scope.hello-Wert an einer anderen Stelle in meinem Controller verwenden. Gibt es einen Weg, es zu tun? Danke – Pares

+0

In diesem Fall müssen Sie sicher sein, dass die asynchrone Aktion abgeschlossen ist, bevor ein richtiger Wert in '$ scope.hello' gespeichert wird. Sie könnten '$ scope.hello' mit einem Standardwert vor der Callback-Funktion initialisieren, so dass Sie nicht" undefiniert "erhalten, wenn Sie anderswo darauf zugreifen, aber die vollständige Lösung hängt davon ab, wie Ihr Flow ist. – pkowalcze

Verwandte Themen