如何为 ember 添加默认值 has many relationship?

How can I add default values for ember has many relationship?

我正在使用 Ember 2.5.0,我有两个模型 serviceavailability,它们看起来像:

// 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 看起来像:

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

如您所见,我尝试使用 defaultValue 但没有成功。对于新路线,如果我们要创建新的 service 记录,我想设置默认值。

感谢任何帮助。

DS.hasMany 的参数散列只接受两个属性:asyncinverse。但它不接受 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]);
  }
});