2016-07-20 29 views
0

Ich habe Künstler, Album, Track-Seiten. Tracks sind mit dem Künstler verwandt, Track kann viele Künstler haben. Ich habe eine Künstlerseite mit den Top-Titeln und Alben des Künstlers. Problem ist, wenn ich Album lade, Albumspuren an toptracks angehängt werden, nachdem ich den Serializer mit embeddedRecordsMixin aktualisiert habe Bitte helfen Sie mir, es herauszufinden.Ember Embedded Record Mixin Append verwandte Modell

json Antwort von Back-End-API: "id": 12, "title": "test track", "artist": "test artist", "artists": [ { "id": 168, "name": "test artist" } ] },


//serializer, application serializer is a RESTAPISerializer 
export default ApplicationSerializer.extend(EmbeddedRecordsMixin, { 
    attrs: { 
    artists: { 
     deserialize: 'ids', 
     serialize: false 
    } 
    } 
}); 

//artist model 
export default Model.extend({ 
    active: attr('boolean'), 
    name: attr(), 
    cover: attr(), 
    like_count: attr(), 
    releases: hasMany('album'), 
    toptracks: hasMany('track'), 
    albums: Ember.computed.filterBy('releases', 'single', false).readOnly(), 
    singles: Ember.computed.filterBy('releases', 'single', true).readOnly(), 
}); 

//album model 
    export default Model.extend({ 
    title: attr(), 
    artist: attr(), 
    single: attr('boolean'), 
    release_date: attr('string'), 
    cover: attr(), 
    like_count: attr('number'), 
    tracks: hasMany('track', {async:true}), 
    artists: attr(), 
    discs: Ember.computed('tracks.[]', function(){ 
    return this.get('tracks').reduce(function(disc, track) { 
     var id = track.get('disc'); 
     if (disc[id]) { 
     disc[id].tracks.push(track); 
     } else { 
     disc[id] = {'tracks': [track]}; 
     } 
     return disc; 
    }, {}); 
    }).readOnly(), 
    groupDiscs: Ember.computed('tracks.[]', function() { 
    return _.uniq(this.get('tracks').mapBy('disc')).length > 1; 
    }).readOnly() 
}); 

//track model 
export default Model.extend({ 
    album: belongsTo('album'), 
    icon: attr(), 
    title: attr(), 
    artist: attr(), 
    explicit: attr('boolean'), 
    duration: attr(), 
    disc: attr('number'), 
    seq: attr('number'), 
    active: attr('boolean'), 
    like_count: attr('number'), 
    minutes: Ember.computed('duration', function() { 
    var duration = this.get('duration'); 
    if (duration) { 
     return duration.substring(3); 
    } 
    }), 
    playing: false, 
    artists: hasMany('artist') 
}); 

Antwort

0

aktualisieren bekam die Lösung Änderung artists Feld in Modellbahn: artists: hasMany('artists')-artists: hasMany('artists') und JSON.parse in didReceiveAttrs() mit