2017-05-22 4 views
0

Ich habe Fabrik mit einer gewissen Rückkehr auf offenen modale Fenster Beispiel:mehrere Funktionen durch Ketten

openModal: function (urn, id, templateId, controller) { 
       $http({ 
        method: 'GET', 
        url: urn 
       }).success(function (data, $scope) { 
        $("#" + id).append($compile(data)($scope)); 
        modalInstance = $uibModal.open({ 
         templateUrl: templateId, 
         controller: controller, 
         backdrop: 'static', 
         keyboard: false 
        }); 
       }).error(function() { 
        alert("error"); 
        return null; 
       }); 
       document.getElementById('main').classList.add("blur"); 
      }, 

Nach dieser Funktion und Ansicht anhängen zu DOM, ich will eine andere Funktion aufrufen, von einem anderen Dienst Hexe Ich injiziere OpenModalFactory.

Beispiel:

$map.autocomplite('wizardsearch'); 
$map.getAutoUserLocationPath(); 

Können Sie uns erklären, wie ich das bis $ q tun müssen? Vielen Dank für Ihre Antwort.

+0

Was meinst du mit _ "wie muss ich das durch $ q" machen? – evolutionxbox

+0

Ich möchte hier eckige $ q Methoden verwenden. Aber wenn Sie eine andere Antwort wissen, schreiben Sie es für mich. Ich verstehe nicht, wie $ q funktionieren muss. Also bitte ich um Hilfe. –

+1

_ "PLZ es für mich schreiben" _ <--- das ist keine angemessene Frage. – evolutionxbox

Antwort

1

Aufschieben sollte die Funktion ein promise machen zurück, die Sie etwas tun, wenn diese Funktion beendet ist Blick auf den folgenden Code

verwenden können
openModal: function (urn, id, templateId, controller,$q) { 
      var def = $q.defer(); 
      $http({ 
       method: 'GET', 
       url: urn 
      }).success(function (data, $scope) { 
       def.resolve(data); 
       $("#" + id).append($compile(data)($scope)); 
       modalInstance = $uibModal.open({ 
        templateUrl: templateId, 
        controller: controller, 
        backdrop: 'static', 
        keyboard: false 
       }); 
      }).error(function (err) { 
       def.reject(err) 
       alert("error"); 

      }); 
      document.getElementById('main').classList.add("blur"); 
      return def.promise; 
      } 

, um sie gerne nennen verwenden:

openModel().then(function(){  
    //do what you want here 
}) 
+0

Ich versuche es zu benutzen und antworte Arbeit oder nicht, ok? –

+0

Danke. Jetzt verstehe ich, wie es funktioniert. Alle arbeiten perfekt. –

+0

froh, Ihnen zu helfen! –

0

Ich kann mir vorstellen, dass Sie so etwas wie dies wollen:

let deferred = this.$q.defer(); 
let promises = []; 
promises.push(service.something); 
this.$q.all(promises).then(/*Do something*/); 
return deferred.promise; 
+0

Können Sie mir sagen, wie ich das in meinem Beispiel machen soll? –

+0

Ich verstehe nicht, was Sie mit Ihrem Fall tun möchten, aber dies ist eine einfache Möglichkeit, was Sie wollen mit $ q – geo

+0

Könnten Sie Ihnen ein Beispiel für meine Frage, nicht nur Beispiel, was Sie auf Sie schreiben zu beantworten. Das reall Beispiel wie du das in meiner Frage findest. –