¿Cómo puedo extender el constructor de un recurso AngularJS ($ resource)?
Tengo un modelo, definido utilizando$resource
, que estoy cargando exitosamente.
Cada instancia cargada es, como se prometió, una instancia de la clase que definí.
(El siguiente ejemplo es de los documentos angulares. En él,User.get
resulta en un objeto que es unainstanceof User
.)
var User = $resource('/user/:userId', {userId:'@id'});
Sin embargo, imagine que cada usuario llega por el cable de esta manera:
{
"username": "Bob",
"preferences": [
{
"id": 1,
"title": "foo",
"value": false
}
]
}
Yo defini unPreference
fábrica que agrega métodos valiosos paraPreference
objetos. Pero cuando un usuario carga, esospreferences
no sonPreference
s, por supuesto.
Intenté esto:
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
}
Pero no tiene efecto y nunca registra nada.
¿Cómo puedo hacer cada elemento en miUser
s ’preferences
Arrayear una instancia dePreference
?