2016-05-22 10 views
1

Ich bin mit Ember 2.5.0 und ich habe zwei Modelle service und availability, die wie folgt aussieht:Wie kann ich Standardwerte für Ember hinzufügen hat viele Beziehungen?

// availability 
import DS from 'ember-data'; 

export default DS.Model.extend({ 
    day: DS.attr('string'), 
    enabled: DS.attr('boolean'), 
    startAt: DS.attr('string'), 
    endAt: DS.attr('string'), 
    service: DS.belongsTo('service') 
}); 

Und service, die wie folgt aussieht:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    description: DS.attr('string'), 
    availabilities: DS.hasMany('availability', 
    { 
     defaultValue: 
     [ 
      { 
      day: 'saturday', 
      enabled: false, 
      startAt: '', 
      endAt: '' 
      }, 
      { 
      day: 'sunday', 
      enabled: false, 
      startAt: '', 
      endAt: '' 
      } 
     ] 
    } 
) 
}); 

Wie man sehen kann ich versuchte defaultValue zu verwenden aber ohne Glück. Für neue Route möchte ich Standardwerte setzen, wenn wir einen neuen service Datensatz erstellen.

Jede Hilfe wird geschätzt.

+0

Warum geben Sie sie nicht explizit beim Aufruf von 'createRecord' an? –

Antwort

3

Das Argument hash, dass DS.hasMany akzeptiert nur zwei Eigenschaften: async und inverse. Es akzeptiert jedoch keine defaultValue Eigenschaft. (source).

Aber keine Angst, Eki Eqbal! Ich denke, Sie können etwas Ähnliches erreichen, indem Sie den Haken Ihres Modells ready() verwenden.

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    description: DS.attr('string'), 
    availabilities: DS.hasMany('availability', { async: true }), // is the data loaded async? 

    ready() { // fires when the model is loaded from server or created locally 
    if (!!this.get('availabilities')) { 
     // don't set to defaults if availabilities is not null 
     return; 
    } 

    var saturday = this.store.createRecord('availability', { 
     day  : 'saturday', 
     enabled : false, 
     startAt : '', 
     endAt : '' 
    }); 

    var sunday = this.store.createRecord('availability', { 
     day  : 'sunday', 
     enabled : false, 
     startAt : '', 
     endAt : '' 
    }); 

    this.get('availabilities').pushObjects([saturday, sunday]); 
    } 
});