2016-07-08 14 views
0

Ich entwickle Anwendung mit AngularJS, die Business-Formular druckt. Rufen Sie Daten von Google Cloud Endpoint ab, übersetzen Sie mit eckiger Übersetzung und öffnen Sie den Druckdialog.AngularJS: Wie warten, bis die Übersetzung abgeschlossen ist

Meine Anwendung funktioniert in fast Fall, aber manchmal Druckdialog öffnet sich vor der Übersetzung abgeschlossen.

MyContoller.js ist wie folgt.

app.controller('MyController', ['$scope','$location','errorServiceFactory', 
    function ($scope,$location,errorServiceFactory) { 
     var param = $location.search(); 
     $scope.list = []; 
     loadingPanelFadeIn(); 
     gapi.client.myCloudEndpoint.retrieve({ 
      id:param.id, 
     }).execute(function (resp) { 
      if(!resp.code){ 
       loadingPanelFadeOut(); 
       $scope.list = resp.items; 
       $scope.$apply(); 
       window.print(); 
      }else{ 
       errorServiceFactory.errorService(resp); 
      } 
      loadingPanelFadeOut(); 
     }); 

    }]); 

html wie folgt.

<div class="myclass" ng-repeat="item in list"> 
    <span class="big" style="(snip)" translate="title"> val1 </span> 
    <span class="big" style="(snip)" translate="to" translate-values="{to: '{{item.field1}}'}"> val2 </span> 
     : 

In den meisten Fällen übersetzt Wert wird in der Seitenansicht angezeigt, aber manchmal val1 val2 angezeigt wird.

Wie kann ich mein Programm reparieren, um den Druckdialog zu öffnen, nachdem die Übersetzung abgeschlossen wurde?

+0

Vielleicht https://docs.angularjs.org/api/ng/directive/ngCloak – Phil

+0

ich gapi sehen müssen versuchen, geladen. client.myCloudEndpoint.retrieve(), aber wenn es ein Versprechen zurückgibt, können Sie .then() – MingShun

+0

@MingShun, Danke für Ihre Antwort verwenden. Aber was ich vor mir habe, ist * nicht * von Google abzurufen gescheitert. Das Abrufen von Google ist erfolgreich, aber manchmal wird das Dialogfeld geöffnet, bevor die Übersetzung abgeschlossen ist. –

Antwort

0

Sie können 'Lösung' verwenden, um dieses Problem zu lösen.

nehmen nur einige Sätze aus the doc for resolve

„Sie lösen können Ihre Controller mit Inhalten oder Daten zur Verfügung zu stellen, die benutzerdefinierte an den Staat ist.“

"Wenn eine dieser Abhängigkeiten Versprechen sind, werden sie aufgelöst und in einen Wert konvertiert, bevor der Controller instanziiert wird und das $ stateChangeSuccess-Ereignis ausgelöst wird."

0

verstecken Nur Inhalt bis DOM

[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { 
 
    display: none !important; 
 
}
<div ng-cloak> 
 
\t <div class="myclass" ng-repeat="item in list"> 
 
\t \t <span class="big" style="(snip)" translate="title"> val1 </span> 
 
\t \t <span class="big" style="(snip)" translate="to" translate-values="{to: '{{item.field1}}'}"> val2 </span> 
 
\t </div> 
 
</div>