Wie kann ich den Konstruktor einer AngularJS-Ressource ($ resource) erweitern?
Ich habe ein Modell, definiert mit$resource
, die ich erfolgreich lade.
Jede geladene Instanz ist, wie versprochen, eine Instanz der von mir definierten Klasse.
(Das folgende Beispiel stammt aus den Angular-Dokumenten.User.get
ergibt ein Objekt, das eininstanceof User
.)
var User = $resource('/user/:userId', {userId:'@id'});
Stellen Sie sich jedoch vor, jeder Benutzer kommt folgendermaßen über das Kabel:
{
"username": "Bob",
"preferences": [
{
"id": 1,
"title": "foo",
"value": false
}
]
}
Ich definierte einPreference
Fabrik, die wertvolle Methoden hinzufügtPreference
Objekte. Aber wenn ein Benutzer lädt, diepreferences
nichtPreference
s natürlich.
Ich habe Folgendes versucht:
User.prototype.constructor = function(obj) {
_.extend(this, obj);
this.items = _.map(this.preferences, function(pref) {
return new Preference(pref);
});
console.log('Our constructor ran'); // never logs anything
}
Aber es hat keine Wirkung und protokolliert nie etwas.
Wie kann ich jeden Artikel in meinemUser
s ’preferences
ordnen Sie eine Instanz vonPreference
?