Winklige verschachtelte Versprechen 'Nicht Lesen der Eigenschaft 'dann' undefined'

Ich bin Aufruf eines service innerhalb einer Fabrik, von einem controller. Der service ruft dann ein weiterer Dienst, der macht einen $http-request für einige json. Der erste service muss dann zum ändern der Daten aus dem json und sendet es an den controller. Ich kann nicht herausfinden, wie man die Daten zurück an den controller. Ich erhalte die Fehlermeldung " Cannot read property 'dann' undefined' über meine Verwendung von dann() innerhalb der $Umfang.getModifiedData Funktion in meinem controller. Die Steuerung wird wissen über die employeesFactory.modifyData () - Dienst, denn wenn ich entfernen Sie die Versprechen und dann die () - Funktionalität, es wird erfolgreich aufgerufen.

Habe ich diese: https://docs.angularjs.org/api/ng/service/$q

In meinem controller:

$scope.getModifiedData = function() {
  var promise = employeesFactory.modifyData();
  promise.then(function(modifiedData) {
    console.log(modifiedData, 'modifiedData');
  });
};
$scope.getModifiedData();

In meinem Werk:

var targetEmployeesAPI = 'http://sample.dev/api/employees.jsonp?callback=JSON_CALLBACK';

service.employeesRawData = function() {
  var deferred = $q.defer();
  $http({
    method: 'JSONP',
    url: targetEmployeesAPI
  }).success(function(data) {
    employeesRaw = data.employees;

    deferred.resolve(employeesRaw);
  }).error(function() {
    deferred.reject();
  });
  return deferred.promise;
};

service.modifyData = function() {
  var deferred = $q.defer();

  service.employeesRawData()
    .then(function(employeesRaw) {

      //Do stuff: Modify data from service.employeesRawData()
      //Eventually create object modifiedData
      modifiedData = {};

      if (modifiedData !== undefined) {
        deferred.resolve(modifiedData);
      } else {
        deferred.reject('Rejected');
      }

    return deferred.promise;
  });
};
Ich sollte klarstellen, dass service.employeesRawData() erfolgreich wird die json-Daten und ich bin in der Lage, es zu ändern, im service.modifyData(). Ich weiß nur nicht, wie die Daten zurück, die Objekt an den controller.

InformationsquelleAutor maskedjellybean | 2014-12-07

Schreibe einen Kommentar