2016-09-10 4 views
0

Ich bin neu zu angularjs. Ich verwechsle mit Wie verheißungsvoll Modell arbeiten in AngularJS. Das folgende Beispiel ist der Tutorial-Code, den ich von GitHub finde. Ich kann verwechseln, woher der Parameter "Antwort" in then() kommt und wie es funktioniert? Kann mir bitte jemand erklären?unklar Parameter zu übergeben Versprechen Modell

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .controller('RegisterController', RegisterController); 

    RegisterController.$inject = ['UserService', '$location', '$rootScope']; 
    function RegisterController(UserService, $location, $rootScope) { 
     var vm = this; 

     vm.register = register; 

     function register() { 
      vm.dataLoading = true; 
      UserService.Create(vm.user) 
       .then(function (response) { // where response comes from? 
        if (response.success) { 
         // FlashService.Success('Registration successful', true); 
         console.log('Registration successful') 
         $location.path('/login'); 
        } else { 
         // FlashService.Error(response.message); 
         console.log(response.message); 
         console.log('get error when register users') 
         vm.dataLoading = false; 
        } 
       }); 
     } 
    } 

})(); 

Antwort

1

Es hieß Promise - die den guten alten Callback-Stil für asynchrone Methoden ersetzen. Statt einen Rückruf an UserService.Create zu übergeben, gibt UserService.Create ein Versprechen zurück, über das Sie entscheiden können, was danach kommt (nachdem es aufgelöst oder zurückgewiesen wurde). Versprechen haben die Methode dann(), die zwei Argumente akzeptiert:

  1. Funktion für Versprechen
  2. Funktion gelöst Handhabung für Versprechen abgelehnt Handhabung

Es vereinfacht Ihre Flow + brechen die Callback-Pyramide im Falle mehrerer Rückrufe.

Angular verwendet Bibliothek genannt q: https://github.com/kriskowal/q

+0

@ Danke für meine Frage beantworten! Allerdings verwechsle ich immer noch den Parameter "Antwort" in dann (Funktion (Antwort). Geht es von außerhalb dieses Controllers? – pipi

+0

Ja, dieses Argument kommt von der Funktion, die das Versprechen gelöst. In Ihrem Fall in ist der zurückgegebene Wert von UserService.Create –

Verwandte Themen