私はember.jsの学習を始めたばかりです。いくつかのチュートリアルに従い、ここで実用的な例を作成しました。
App.Track.reopenClass({
find: function() {
var tracks = [];
$.ajax({
url: 'http://ws.spotify.com/lookup/1/.jsonuri=spotify:album:6J6nlVu4JMveJz0YM9zDgL&extras=track',
dataType: 'json',
context: this,
success: function(data, textStatus, jqXHR) {
$.each(data.album.tracks, function(index, value) {
track_id = value.href.replace("spotify:track:", "");
tracks.addObject(App.Track.create(value));
// I would rather do something like:
// tracks[track_id] = App.Track.create(value)
});
}
})
return tracks;
}
});
この関数はAPIにヒットし、返されたデータをループして、tracksオブジェクト(tracks.addObject(App.Track.create(value));)にデータを入力して返します。
この関数から通常のオブジェクトを取得するのではなく、Enumerable / Arrayを取得して、filterPropertyで操作したり、idでトラックを引き出したりしたいと思います(配列インデックスとして使用したいtrack_idがあります)。
配列を使用しようとする私の試みはすべて、ajax呼び出しがトラックに入力されたときにビューを更新する残り火の魔法の能力を壊しました。
誰かがhttp://jsfiddle.net/ZEzwn/を変更してEnumerable(できれば配列)を返すことができますが、それでもビューは自動的に更新されますか?