ich wie die sauber (und ich denke, leicht zu folgen) Art und Weise, dass Versprechungen autounwrapped wurden:AngularJS - sauberste Weg Versprechen Rahmen hinzuzufügen, jetzt, wo Angular Auto Abwickeln von Versprechen veraltet wirklich
$scope.myData = DataService.query({something:"etc"}); // done;
Und ich wirklich kümmern sich nicht für das, was jetzt der normale Weg, es zu tun zu sein scheint, ohne die automatische Abwickeln:
DataService.query({something:"etc"}).$promise.then(function (data){
$scope.myData = data;
});
Was ich möchte, um zu sehen, so etwas wie dieses:
$scope.pulseData = $scope.setPromise(CitsciAnalytics.pulse({
projId:"yardmap"
}));
Aber ich kann nicht sehen, wie man das macht. Der nächstgelegene ich bekam, war:
$scope.pulseData = $scope.setPromise("pulseData", CitsciAnalytics.pulse({
projId:"yardmap"
}));
Mit Hilfe einer Funktion zum Stammbereich hinzugefügt:
.run(["$rootScope", "$log", function ($rootScope, $log) {
//parent method to avoid promise unwrapping boilerplate
$rootScope.setPromise = function (scopeVar, promise) {
if (arguments.length === 2 && promise && promise.$promise) {
var scope = this;
promise.$promise.then(function (data){
scope[scopeVar] = data;
});
} else {
$log.error("$rootScope.setPromise has invalid arguments");
}
};
}]);
aber Ich mag nicht die unDRY Erfordernis, den Umfang Variablennamen als zusätzliche Zeichenkette mit geben . Hat sich jemand anderes darum gekümmert oder einen Weg gesehen, dies sauberer zu machen?
ah, vielen Dank für die Klärung, auch was pixelbits vorgeschlagen, schön den offiziellen Weg, um vorwärts zu gehen mit this- – chrismarx
so, für die Menschen $ Ressource verwenden, dies ist nicht wirklich etwas beeinflussen ? https://github.com/angular/angular.js/commit/5dc35b527b3c99f6544b8cb52e93c6510d3ac577 – chrismarx
Genau! Laut ** [die Dokumente] (https://docs.angularjs.org/api/ngResource/service/$resource) **: _ "Es ist wichtig zu erkennen, dass das Aufrufen einer Objektmethode" $ resource "sofort eine zurückgibt leere Referenz (Objekt oder Array abhängig von 'isArray') Sobald die Daten vom Server zurückgegeben werden, wird die vorhandene Referenz mit den tatsächlichen Daten gefüllt.Dies ist ein nützlicher Trick, da die Ressource normalerweise einem Modell zugewiesen wird, das dann von gerendert wird die Ansicht. [...] Dies bedeutet, dass man in den meisten Fällen keine Callback-Funktion für die Aktionsmethoden schreiben muss. "_ – gkalpak