我刚刚开始学习 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.addObject(App.Track.create(value));) 并返回它。
我不想从这个函数中取回一个普通的对象,而是想要一个 Enumerable / Array 以便我可以使用 filterProperty 操作它或按 id 拉出轨道(有一个 track_id 我想用作数组索引)。
我所有使用数组的尝试都破坏了 ember 在 ajax 调用填充轨道时更新视图的神奇能力。
任何人都可以修改http://jsfiddle.net/ZEzwn/以返回一个 Enumerable(最好是一个数组)但仍然自动更新视图吗?