2016-05-22 1 views
1

私はエンバー2.5.0を使用していると私はのように見える二つのモデルserviceavailability持っている:あなたは、私がdefaultValueを使用しようとしていた見ることができるようにemberのデフォルト値を追加するにはどうすればいいですか?

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: '' 
      } 
     ] 
    } 
) 
}); 

:ように見える

// 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') 
}); 

serviceを運がない。新しいルートの場合、新しいserviceレコードを作成する場合は、デフォルト値を設定します。

何か助けていただければ幸いです。

+0

「createRecord」を呼び出すときに明示的に指定するのはなぜですか? –

答えて

3

DS.hasManyの引数ハッシュは、asyncinverseの2つのプロパティしか受け入れません。しかし、それはdefaultValueプロパティを受け入れません。 (source)。

恐れていない、Eki Eqbal!私はあなたのモデルのready()フックを使って同様のことを達成できると思います。

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]); 
    } 
}); 
関連する問題