Können Parameter wie diese übergeben werden? Ich muss einige Informationen weitergeben, die nicht Teil des Modells selbst sind.Übergeben von Parametern zum Speichern()
myModel.save({site : 23})
Können Parameter wie diese übergeben werden? Ich muss einige Informationen weitergeben, die nicht Teil des Modells selbst sind.Übergeben von Parametern zum Speichern()
myModel.save({site : 23})
Es ist möglich, wenn Sie:
serializeIntoHash
Methode.Zum Beispiel:
App.Model = DS.Model.extend({
//...
site: DS.attr('number', { serialize: false })
});
App.ModelSerializer = DS.RESTSerializer.extend({
serializeIntoHash: function(hash, type, record, options) {
this._super(hash, type, record, options);
Ember.merge(hash, {
'site': record.get('site')
});
}
});
Sehen Sie diese comment, das ist der richtige Weg, um Ihr Ziel zu erreichen.
You can pass options as of Ember Data 2.2. Sie müssen jedoch daran denken, Ihre Optionen unter der adapterOptions
Eigenschaft zu übergeben. Zum Beispiel
myModel.save({
adapterOptions: {
site: 23
}
});
Innerhalb entweder von DS.Store#findAll
, DS.Store#findRecord
, DS.Store#query
, DS.Model#save
und DS.Model#destroyRecord
, einer der Parameter jetzt sollte adapterOptions
haben. Im Fall von DS.Model#save
können Sie updateRecord
in Ihrem Adapter außer Kraft setzen:
export default DS.Adapter.extend({
updateRecord(store, type, snapshot) {
// will now have `snapshot.adapterOptions`.
// ...
}
});
Genau das, was ich brauchte. Vielen Dank –
Wo Seite her? Sind es Metadaten? Wird es auf dem Controller bearbeitet? Wie kommt es, es ist nicht auf dem Modell definiert – IgorT
@IgorT die Website repräsentiert die vorherige Seite des Modells. Ich habe auch andere Gründe dafür, ich benutze ein Java/Spring-Backend und das Übergeben von Params erlaubt es mir, zwischen Zielspeichermethoden zu unterscheiden. – jax
@IgorT Ich habe die gleichen Bedürfnisse: einige kontextabhängige Parameter werden vom Backend benötigt ... –