YUI3 sendRequest をデータソースに適用して、プレーン オブジェクトではなく定義済みオブジェクトを返すにはどうすればよいですか?
たとえば、この Base クラスとそのメソッドがあります。
function Student(id, name){
this.id = id;
this.name = name;
}
Context.prototype.setId = function(id){ this.id = id; };
Context.prototype.setName = function(name){ this.name = name; };
Context.prototype.getId = function(){ return this.id; };
Context.prototype.getName = function(){ return this.name; };
そして、API からデータを取得し、それを正規化し、データをオブジェクトとして返す次のコードがあります。
var studApiDataSource = new Y.DataSource.Get({source: API_URL});
studApiDataSource.plug(Y.Plugin.DataSourceJSONSchema, {
schema: {
resultListLocator: "response.student",
resultFields: ["id","name"]
}
});
var myCallback = function(e) {
Y.Array.each(e.response.results, function(stud){
Y.log(stud.id+' '+stud.name);
}
}
studApiDataSource.sendRequest({
request: "?cmd=getStudents",
callback: {
success: myCallback,
failure: function (e) { }
}
});
stdApiDataSource.sendRequest() によって取得され、myCallback に渡されるオブジェクトの配列は、id プロパティと name プロパティを持つ通常のオブジェクトです。ただし、これらをメンバー関数 (getId、getName など) も備えた Student オブジェクトにしたい