传递参数以保存()

jax*_*jax 6 ember-data

是否可以传递这样的参数?我需要传递一些不属于模型本身的信息.

myModel.save({site : 23})
Run Code Online (Sandbox Code Playgroud)

Jas*_* Tu 17

您可以传递Ember Data 2.2中的选项.但是,您必须记住在该adapterOptions属性下传递您的选项.例如,

myModel.save({
  adapterOptions: {
    site: 23
  }
});
Run Code Online (Sandbox Code Playgroud)

无论是内部的DS.Store#findAll,DS.Store#findRecord,DS.Store#query,DS.Model#saveDS.Model#destroyRecord,其中的一个参数现在应该已经有了adapterOptions.在这种情况下DS.Model#save,您可以updateRecord在适配器中覆盖:

export default DS.Adapter.extend({
  updateRecord(store, type, snapshot) {
    // will now have `snapshot.adapterOptions`.
    // ...
  }
});
Run Code Online (Sandbox Code Playgroud)


Mik*_*ski 9

你有可能:

  • 为模型添加'volatile'属性,
  • 定义自定义模型序列化程序,并覆盖其serializeIntoHash方法.

例如:

App.Model = DS.Model.extend({
  //...
  site: DS.attr('number', { serialize: false })
});
Run Code Online (Sandbox Code Playgroud)
App.ModelSerializer = DS.RESTSerializer.extend({

  serializeIntoHash: function(hash, type, record, options) {
    this._super(hash, type, record, options);

    Ember.merge(hash, {
      'site': record.get('site')
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

看到此评论,这是实现目标的正确方法.