Jak mogę rozszerzyć konstruktor zasobu AngularJS ($ resource)?

Mam model zdefiniowany za pomocą$resource, że z powodzeniem ładuję.

Każda załadowana instancja jest, zgodnie z obietnicą, instancją zdefiniowanej klasy.

(Poniższy przykład pochodzi z dokumentów Angulara. W nim,User.get powoduje, że obiekt jestinstanceof User.)

var User = $resource('/user/:userId', {userId:'@id'});

Wyobraź sobie jednak, że każdy użytkownik przechodzi w taki sposób:

{
  "username": "Bob",
  "preferences": [
    {
      "id": 1,
      "title": "foo",
      "value": false
    }
  ] 
}

Zdefiniowałem aPreference fabryka, która dodaje cenne metodyPreference przedmioty. Ale kiedy użytkownik ładuje, tepreferences niePreferences, naturalnie.

Próbowałem tego:

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
}

Ale nie ma żadnego efektu i nigdy niczego nie rejestruje.

Jak mogę zrobić każdy przedmiot w moimUsers ’preferences tablica wystąpieniePreference?

questionAnswers(5)

yourAnswerToTheQuestion