2016-07-21 6 views
1

Ich baue eine iOS-App mit Ionic Framework, die in Angular Js ist. In meiner app nach meinem Routing BeispielWie lade ich die Ansicht, bevor Ajax auf Angular Js fertig ist?

.state('app.friends', { url: '/friends', cache: false, requireLogin: true, views: { 'menuContent': { templateUrl: 'templates/friends.html', controller: 'friendsCtrl' } } })

Hier i eine Vorlage friends.html und seine Controller m Lade ist friendsCtrl. In friendsCtrl habe ich eine Ajax-Funktion, die api aufruft und die Liste des Freundes im JSON-Format aufruft. Das Problem, das ich habe, ist, dass meine Vorlage in der Ansicht nicht geladen wird, bis Ajax abgeschlossen ist. Irgendwann, wenn es große Daten über API gibt, dauert es sehr lange. Also möchte ich eine leere Ansicht anzeigen, bis Ajax abgeschlossen ist. Ich habe viele Fragen und Antworten über die Fertigstellung von Ajax vor dem Rendern der Ansicht gesehen, aber in meinem Fall möchte ich die Ansicht vor dem Ajax vollständig darstellen. Wie dies zu tun ist, schlagen Sie mir bitte vor.

Dank

Antwort

1

Sie eine der aktiven latenten Objekt ($ q) verwenden können, um dies zu erreichen, siehe https://docs.angularjs.org/api/ng/service/ $ q

Alternativ Sie das Laden zu einem späteren Zeitpunkt es sich um eine durch Umwickeln passieren erzwingen Timeout-Funktion ($ Timeout) - siehe https://docs.angularjs.org/api/ng/service/ $ timeout

EDIT

someFunc() { 
    $scope.somevar = {}; 
    $http.get('url').then(
     function(response){ 
      $scope.someVar = response.data; 
     }); 
    return $scope.somevar;  // returns {} 
} 

====================================== 

    someFunc() { 
     var deferred = $q.defer(); 
     $http.get('url').then(
      function(response){ 
       $scope.someVar = response.data; 
       deferred.resolve(); 
      }); 
     return deferred.promise; // return a promise to set someVar 
    } 

    var $scope.somevar = {}; 
    someFunc().then(
     function() { 
      console.log("somevar is set"); 
     }); 
+0

danke @Justice für die Antwort. Ich verstehe nicht, wie man $ q benutzt. Können Sie bitte ein Beispiel zeigen? Vielen Dank –

Verwandte Themen