Angulars $ Ressource hat große Funktion, um Objekte zurückzugeben, die ihre Werte injiziert bekommen und Ansichten automatisch aktualisieren. Im $ ressource-Service ist ein Resource Objekt, das das aufgelöste Ergebnis in sich selbst kopiert mit shallowClearAndCopy().
Ich möchte die von einer $ -Ressource zurückgegebene Zusage verketten und etwas wie das Resource-Objekt erhalten, das das verzögerte Ergebnis injiziert bekommt. (Code-Beispiel ein Objekt zurückzugeben, bearbeitet und erfordern ein Argument.)
var otherProperty = 'somethingChanging';
var lazyUser = $resource('/user/:userId').get({id:id});
var userDisplayNamePromise = lazyUser.$promise.then(transformResult);
function transformResult(user){
return { displayName: user.firstname + ' ' + user.lastname,
other: user[otherProperty]
};
}
zur Zeit habe ich, wie etwas zu tun
userDisplayNamePromise.then(updateDisplayUser);
function updateDisplayUser(displayName){$scope.user = displayName;}
und ich würde so etwas wie
$scope.user = something(userDisplayNamePromise);
Liebe zu tun
Ich konnte nichts finden, was mir helfen würde, Versprechen so einfach zu nutzen. Hat jemand einen guten Tipp?
Ich habe ein grundlegendes Arbeitsbeispiel bei github.com/burka/resolvling gelegt. Aber ich kann mir nicht vorstellen, dass das vorher niemand gemacht hat?
Ich habe einige verschiedene Transformationen zu tun, abhängig von Daten, die ich der transformierenden Funktion zur Verfügung stellen müsste. Zum Beispiel bekomme ich eine Karte von Gebietsschema-übersetzten Mappings {list1: {a: 1, b: 2}, list2: {d: "Hallo", f: "etwas"}} ', die ich in einer (zwischengespeicherten) Anfrage bekomme brauche aber die Listen in verschiedenen Teilen der App. Also nahm ich den Kartenzugriff auf einen Dienst und wollte ein träge initialisiertes Objekt zurückgeben, anstatt die Verarbeitung von Versprechen zu übernehmen. – flob
Ich habe die Frage entsprechend geändert, indem ich ein Argument hinzugefügt habe, das an die transformierende Funktion übergeben werden müsste. Danke für deine Hilfe :-) Vielleicht muss ich in die Implementierung eintauchen ... :-) – flob