2016-10-24 3 views
0

Ich rufe getLanguageSpecificData(LangCode) Service von zu Hause Controller und Speichern der Daten in localStorage. Auf der Homepage gibt es Language Links, wenn Benutzer auf Englisch klicken, dann wird es zu einer zweiten Vorlage umleiten. Aber das Problem ist, dass immer noch Home-Controller getLanguageSpecificData(LangCode) Service ist nicht seine Ausführung abgeschlossen.So in zweiten Controller, wenn ich versuche, das Ergebnis von localStorage zu erhalten ist es falsch (nicht aktualisiert). Also können Sie bitte sagen, welcher Ansatz in dieser Situation besser ist?Pass Service-Ergebnis zu anderen Controller

Homecontroller-Code:

app.controller('homeController',function($scope,$localStorage,$appService){  
    $scope.loadlanguagefile = function(langcode){   
     $troubleshootingService.getLanguageSpecificData(LangCode).then(function(responce){ 
      $localStorage.data = responce.data; 
     });   
    } 
}); 

'loadlanguagefile' Funktion aufgerufen wird, wenn Anwender auf Enlgish Link und App wird auf die zweite Vorlage umleiten. hier ist secondController Code:

app.controller('secondController',function($scope,$localStorage){ 
    $scope.data = $localStorage.data; 
}); 
+2

Bitte fügen Sie einen Code hinzu, damit wir es überprüfen können. – Sravan

Antwort

0

Per meinem Vorschlag, sollten Sie Callback-Funktion verwenden Ihren Bedarf voll zu tun, wenn die Funktion macht den Englisch Klick disable genannt wird, und wenn Ihr Ergebnis erfolgreich das machen aktivieren. Es wird so etwas wie dieses:

getLanguageSpecificData(LangCode,callback:(dataToReturn:any)=>void):any{ 
    //logic here to get data to return 

    callback(dataToReturn); 
    } 

Für diese Methode aufrufen -

1-, bevor die Methode machen Englisch Klick deaktivieren aufrufen.

2- rufen dann die Methoden-

getLanguageSpecificData(imputLangCode,(result)=>{ 

     //logic for data modification 
     //logic to enable English click 

    }); 

3- Aktivieren des englischen Klick innerhalb der Aufruf der Methode.

+0

Vielen Dank für Ihre Hilfe. Problem ist, wenn Benutzer klicken auf "Englisch" Link, dann schrieb ich umleiten Seitencode: href = '#/secondTemplate' in home html page.can wir schreiben Umleitungscode in 'homeController' nach 'getLanguageSpecificData' Service erfolgreich namens. – SURAJ

+0

brauchen Sie das nicht, wenn Sie den englischen Link deaktivieren, bis die 'getLanguageSpecificData' nicht zurückkommt. Und ja, technisch können Sie Code nach Erfolg des Serviceaufrufs an einen beliebigen Controller umleiten. – Viplock

Verwandte Themen