$resource
を使って定義したモデルがあり、正常に読み込んでいます。
ロードされた各インスタンスは、約束どおり、私が定義したクラスのインスタンスです。
(以下の例では、角度のドキュメントからのものであることで、instanceof User
であるオブジェクト内User.get
結果。)
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
のインスタンスにするにはどうすればよいですか?
Angularの外に物をロードしてから、 'preferences'の世話をした後に、ロードされた各ユーザの'新しいユーザ '自身を作成する必要がありますか? –
あなたのリソースでレスポンスインターセプタを使用し、必要に応じてレスポンスを変更できると思います。興味があれば、私は同様のことを達成するコードを持っています。 – teone