我剛剛開始學習ember.js可枚舉或數組,我按照一些教程和created a working example here:我將如何修改這個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,我想用作數組索引)。
我所有使用數組的嘗試都破壞了當ajax調用填充軌道時更新視圖的不可思議的能力。
任何人都可以修改http://jsfiddle.net/ZEzwn/返回一個Enumerable(最好是一個數組),但仍然自動更新視圖?
我不是確定你想要做什麼。你說「我想要一個陣列」,但這是你的(曲目)。無論如何,你應該永遠不要使用數組的密鑰,請參閱Ryan Bigg的帖子:http://ryanbigg.com/2012/10/javascript-arrays-and-objects – louiscoquio
好吧,以便拉出一個軌道我可以使用'tracks.filterProperty ('href','spotify:track:7x7F7xBqXqr0L9wqJ3tuQW')'。這不是昨天工作,但現在它工作!感謝您抽出寶貴時間回覆,請將這一段放到操作員錯誤處! – alienlanes
我已經添加了一些解釋並將其作爲答案 – louiscoquio