2

嘿,我无法将夹具数据动态加载到我的 emberjs 模型中。我该怎么做呢?底部的 addArtist 函数将正确添加一首歌曲,但我不确定如何调整它以将所有歌曲正确加载到数据存储中。有没有比单独添加每个更简单的方法?

App.Store = DS.Store.extend({
    revision: 13,
    adapter: 'DS.FixtureAdapter'
});

App.Artist = DS.Model.extend({
    name: DS.attr('string'),
    tracks: DS.hasMany('App.Tracks')
});

App.Tracks = DS.Model.extend({
    videoid: DS.attr('string'),
    title: DS.attr('string'),
    duration: DS.attr('number')
});

App.Artist.FIXTURES = [];
App.Tracks.FIXTURES = [];

App.loadFixtures = function(){
    $.getJSON('/artists', function(data){
        $.each(data.artists, function(i,v){
            App.Artist.createRecord(v);
        });
    });
    $.getJSON('/tracks', function(data){
        $.each(data.tracks, function(i,v){
            App.Tracks.createRecord(v);
        });
    });
};

App.addArtist = function(){
    var artist = App.Artist.createRecord({
        id: 3,
        name: 'Justin Martin'
    });
    var track = App.Tracks.createRecord({
        id: 300,
        title: 'Jungle Mix',
        duration: 200
    });
    artist.get('tracks').pushObject(track);
};

示例 JSON 响应:

{"artists":[
{"id":1,"name":"The (International) Noise Conspiracy","track_ids":[1,2,3,4]},
{"id":2,"name":"0SM","track_ids":[5]},
{"id":3,"name":"2am","track_ids":[6,7,8]}
]}

{"tracks":[
{"id":1,"videoid":"FyjmCg_VMU0","title":"Smash It Up","duration":197},
{"id":2,"videoid":"jKXWm9yi4DY","title":"Only Lovers Left Alive","duration":162},
{"id":3,"videoid":"fwbleH55CCk","title":"Up For Sale","duration":211},
{"id":4,"videoid":"50JdKhIB1EQ","title":"A New Morning, Changing Weather","duration":270},
{"id":5,"videoid":"bd6ve0ydHVo","title":"The Landing feat. Alex G - Original Mix","duration":322},
{"id":6,"videoid":"RnwVtbMW4x4","title":"Anxious","duration":238},
{"id":7,"videoid":"Yo0zsqa06ZE","title":"I Did Wrong","duration":305},
{"id":8,"videoid":"_9ydBAgg130","title":"I Love You (feat. Baekchan & Joohee)","duration":219}
]}

我应该在 Artists 响应中包含 track_ids 还是在我调用此方法时添加它们?

artist.get('tracks').pushObject(track);
4

0 回答 0