Как расширить конструктор ресурса AngularJS ($ resource)?
У меня есть модель, определенная с помощью$resource
, что я успешно загружаюсь.
Каждый загруженный экземпляр, как и было обещано, является экземпляром класса, который я определил.
(Пример ниже взят из Angular Docs. В немUser.get
приводит к объекту, который являетсяinstanceof User
.)
var User = $resource('/user/:userId', {userId:'@id'});
Тем не менее, представьте, что каждый пользователь приходит по проводам так:
{
"username": "Bob",
"preferences": [
{
"id": 1,
"title": "foo",
"value": false
}
]
}
Я определилPreference
фабрика, которая добавляет ценные методыPreference
объекты. Но когда пользователь загружает, теpreferences
неPreference
с, естественно.
Я попытался это:
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
}
Но это не имеет никакого эффекта и никогда ничего не регистрирует.
Как я могу сделать каждый элемент в моемUser
preferences
массив экземпляр?Preference