【发布时间】:2012-10-10 17:25:21
【问题描述】:
我刚开始学习 ember.js,跟着一些教程和created a working example here:
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(最好是一个数组)但仍然自动更新视图吗?
【问题讨论】:
-
我不确定你想做什么。你说“我想得到一个数组”,但这就是你所拥有的(曲目)。无论如何,你不应该使用 id 作为数组键,请参阅 Ryan Bigg 帖子:ryanbigg.com/2012/10/javascript-arrays-and-objects
-
好的,我可以使用
tracks.filterProperty('href', 'spotify:track:7x7F7xBqXqr0L9wqJ3tuQW')拉出一个轨道。这昨天不起作用,但现在它起作用了!感谢您花时间回复,将此归结为操作员错误! -
我已经添加了一些解释并使其成为答案
标签: ember.js