2017-12-29 3 views
0
$scope.editData = function(newValue){ 
     var deferred = $q.defer(); 
     $scope.Data=newValue; 
     deferred.resolve($scope.Data); 
     return deferred.promise; 
    }; 

ich diese Funktion geschrieben haben Punkt der Controller beim Starten, ich habe nur für diese Funktion verwendet Versprechen, weil, wenn die Daten auf die Variable $ scope.Data dann sollte nur assinged wird verbleibende Teil der Funktionen gehen in der Steuerung.Wie versprich Funktion in angularjs?

Kann mir jemand helfen?

+0

Bitte teilen Sie den Controller-Code zu, wo Sie diese umgesetzt haben. – orangespark

Antwort

0

Dies ist überhaupt nicht vorteilhaft, es wird wie Sync-Code handeln.
ändern es wie folgt aus:

$scope.editData = function(newValue){ 
     var deferred = $q.defer(); 
     $timeout(function() { 
      $scope.Data=newValue; 
      deferred.resolve($scope.Data); 
      return deferred.promise; 
     },50); 

     return deferred.promise; 
    }; 

Auf diese Weise wirst du den Code lassen weiter ausführen und nach 50 Millisekunden, wird das Versprechen gelöst werden.
Dies ist, wie Sie die Funktion editData:

$scope.editData(newValue).then(function() { /* do something here */ });