Como posso estender o construtor de um recurso AngularJS ($ resource)?
Eu tenho um modelo, definido usando$resource
, que estou carregando com sucesso.
Cada instância carregada é, como prometido, uma instância da classe que defini.
(O exemplo abaixo é dos documentos angulares. Nele,User.get
resulta em um objeto que é uminstanceof User
.)
var User = $resource('/user/:userId', {userId:'@id'});
No entanto, imagine cada usuário vem através do fio assim:
{
"username": "Bob",
"preferences": [
{
"id": 1,
"title": "foo",
"value": false
}
]
}
Eu defini umPreference
fábrica que adiciona métodos valiosos paraPreference
objetos. Mas quando um usuário carrega, aquelespreferences
não sãoPreference
s, naturalmente.
Eu tentei isso:
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
}
Mas isso não tem efeito e nunca registra nada.
Como posso fazer cada item na minhaUser
s 'preferences
array uma instância dePreference
?