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
niePreference
s, 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 moimUser
s ’preferences
tablica wystąpieniePreference
?