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 nichtPreferences 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 meinemUsers ’preferences ordnen Sie eine Instanz vonPreference?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage